.. _container_static_ip: ======================= Docker容器分配静态IP ======================= 在 :ref:`libvirt_static_ip_in_studio` 为KVM虚拟机配置了静态IP地址,是通过调整Libvirt的DHCP分配IP地址实现的。在 :ref:`studio` 环境中,同样,也有部分Dcoker容器需要分配静态IP地址,以便运行基础服务。 .. note:: 在本案例中,我想部署3个Ceph容器节点,提供分布式存储给OpenStack集群使用,所以需要分配静态的IP地址。 参考 `Assign static IP to Docker container `_ 步骤如下: - 创建自己的docker网络:: docker network create --subnet=172.18.0.0/16 ceph-net 上述命令领创建了一个随机命名的bridge:: bridge name bridge id STP enabled interfaces br-58de6f145577 8000.0242723272a0 no .. note:: 为了能够更好区别 - 在从镜像创建容器时添加 ``--net ceph-net`` 参数,并指定静态IP ``--ip 172.18.0.11`` 作为容器的IP地址:: docker run --net ceph-net --ip 172.18.0.11 -it ubuntu bash 完整实践命令如下:: docker run --net ceph-net --ip 172.18.0.11 -it -d \ --hostname ceph-node1 --name ceph-node1 -v data:/data ubuntu:latest /bin/bash 我发现我很久以后忘记了自己曾经做过Docker静态IP地址的实践,在 :ref:`fix_kind_restart_fail` 还折腾了很久, :ref:`kind` 也需要固定IP地址才能在不断重启中保持运行。 .. note:: `docker network connect `_ 文档说明了链接容器到网络的方法:: docker network cnnnect [OPTIONS] NETWORK CONTAINER 以上命令 ``[OPTIONS]`` 可以是类似 ``--ip 172.17.0.11`` ,当链接容器到一个网络,就可以和连接到同一个网络到其他容器通讯。并且启动时也能指定连接的网络和IP地址,即使用 ``docker run`` 指令,类似如上。 .. note:: Docker只允许在自创建的docker网络上设置静态IP地址,默认的3个内置docker网络不允许使用 ``--ip`` 参数 参考 ========== - `docker network connect `_ - `Assign static IP to Docker container `_