docker - 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 地址,预计将由用户的容器使用。
帮助将不胜感激。
解决方案
推荐阅读
- javascript - JavaScript === 运算符为相同的字符串返回 false
- node.js - 尝试使用节点 js 在 mongo db 中保存数据时无法读取未定义的属性“$elemMatch”
- php - 包含辅助方法 - 全局变量
- reactjs - 如何从 React 中的引导切换菜单制作移动按钮?
- javascript - React 组件表在更新状态后被多次渲染或复制
- rest - Soapui - 即使在得到响应后,休息请求也会继续旋转
- java - Kafka Streams - cron 表达式的处理器调度标点符号
- javascript - 使用 JS 修改嵌入在 Google Chrome 扩展中的本地文件
- c++ - Return Statement 定位
- javascript - 我应该使用什么 HTTP 动词来向 API 发送数据并获得响应?