无法在docker swarm覆盖网络中更改容器的静态IP

时间:2018-08-22 14:03:29

标签: docker networking docker-swarm

最近

我有一个容器加入了群体覆盖网络,

有时候,出于多种原因,我将更改静态IP,

但不确定为什么docker network inspect中的IPv4Address

仍显示旧IP地址,而不显示新IP地址,

例如:

步骤1.通过运行容器 docker run -itd -h kafka_1 --name kafka_1 kafka:latest

步骤2.分配网络接口以加入覆盖网络 docker network connect --ip 172.20.0.110 test-overlay-net kafka_1

第3步。附加到kafka容器,然后按以下步骤更改IP ifconfig eth1 172.20.0.111 netmask 255.255.0.0 broadcast 172.20.255.255

步骤4.注销容器,并通过以下方法检查检查信息 docker network inspect test-overlay-net

第5步,意识到IP地址仍然是旧的,即使ip在容器中已经成功更改。 "Containers": { "df1de7d9809f3e84857ef19db10f7c50d3d65153dcd47f3b22af6ed3a5ab1b41": { "Name": "kafka_1", "EndpointID": "37fe6b03b87435f897780826992a6e1f9b491444738c10de6c7c56aea3edb71d", "MacAddress": "02:42:ac:14:00:6f", "IPv4Address": "172.20.0.110/16", "IPv6Address": "" },

有人知道如何解决这个问题吗?

当前,我只是使用docker network disconnect -f test-overlay-net kafka_1找到解决方法,然后通过docker network connect --ip

重新连接

非常感谢!

1 个答案:

答案 0 :(得分:0)

似乎docker从其内部管理中读取ip,而不是直接从容器的网络名称空间中读取ip,因此docker不知道您的IP更改。 如果您未明确指定IP,则docker可能会将您在容器中设置的地址分配给新连接的地址,从而导致地址冲突。覆盖数据包路由也可能会出现问题。 总之,我不建议更改容器内的IP设置。 您的用例是什么?