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



>最近,

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

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

但不确定为什么来自docker network inspect的IPv4地址会

仍然显示旧的 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 容器并通过以下方式更改 ipifconfig 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再次重新连接

非常感谢!

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

最新更新