首页 > 解决方案 > Docker 内部使用来自用户 IP 地址池的 IP 地址

问题描述

Docker version 18.09.0, build 4d60db4
OS VERSION : Centos 7

问题陈述 : -

我在同一个局域网上有一台主机和一台工作机。两者都由 docker-machine 实用程序连接。工作机器预计将运行 3 个 zookeeper 独立容器。我在我的主机上创建了一个 docker 覆盖网络,使用 - docker network create --attachable --subnet 200.184.152.0/24 --gateway 200.184.152.254 --driver overlay my network 我想将 zookeeper 容器与固定 IP 地址绑定,如下所示: -

zoo1 : 200.184.152.2 zoo2: 200.184.152.3 zoo3: 200.184.152.4

使用以下命令移动到工作机器的外壳后:

eval $(docker-machine env worker-1)

我运行 zookeeper 的第一个实例zoo1: 200.184.152.2。它成功运行。然后我尝试运行第二个 Zookeeper 实例zoo2: 200.184.152.3,但它没有给出网络错误。

然后我在工作机器上使用 docker network inspect my-network 检查网络,并在容器部分显示结果:-

"Containers": {
            "1a2471c777c907dc05bb0f23e819919354669de699f862e4fdc093293d145b31": {
                "Name": "zoo1",
                "EndpointID": "8bb5eebd1cacf36dc7cdad7fc3d72c45047c66b455c568cc9e8911d2121fd8d6",
                "MacAddress": "02:42:c8:b8:98:02",
                "IPv4Address": "200.184.152.2/24",
                "IPv6Address": ""
            },
            "lb-my-network": {
                "Name": "my-network-endpoint",
                "EndpointID": "8f747b26e921ee1543631b758b7dfaf8c7e820c47a95849608dc3568f9957e79",
                "MacAddress": "02:42:c8:b8:98:03",
                "IPv4Address": "200.184.152.3/24",
                "IPv6Address": ""
            }
        },

这个 lb-my-network 正在使用我的组件所需的 IP 地址,因此整个自动部署失败。最糟糕的是,lb-my-network 的 IP 地址发生变化,它不断与其他容器的 IP 地址发生冲突。

这是预期的吗?如果是,那么当 docker 从用户逻辑保留的池中随机使用 IP 地址时,如何使用自动化部署多个容器。

在文档中,说明 docker 需要三个地址才能工作,一个网络地址,一个广播地址和一个网关地址,因此 /24 子网中的用户可以使用 253 个地址。但是这里 lb-my-network 使用的是池中的 IP 地址,预计将由用户的容器使用。

帮助将不胜感激。

标签: dockerdocker-swarmdocker-machine

解决方案


推荐阅读