Docker容器分配静态IP¶
在 Studio环境libvirt静态分配IP 为KVM虚拟机配置了静态IP地址,是通过调整Libvirt的DHCP分配IP地址实现的。在 Studio Atlas 环境中,同样,也有部分Dcoker容器需要分配静态IP地址,以便运行基础服务。
备注
在本案例中,我想部署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
备注
为了能够更好区别
在从镜像创建容器时添加
--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地址的实践,在 修复kind集群重启异常 还折腾了很久, kind(本地docker模拟k8s集群) 也需要固定IP地址才能在不断重启中保持运行。
备注
docker network connect 文档说明了链接容器到网络的方法:
docker network cnnnect [OPTIONS] NETWORK CONTAINER
以上命令 ``[OPTIONS]`` 可以是类似 ``--ip 172.17.0.11`` ,当链接容器到一个网络,就可以和连接到同一个网络到其他容器通讯。并且启动时也能指定连接的网络和IP地址,即使用 ``docker run`` 指令,类似如上。
备注
Docker只允许在自创建的docker网络上设置静态IP地址,默认的3个内置docker网络不允许使用 --ip
参数