我有一个环境,需要在 Docker 容器中运行一些外部软件。该软件尝试通过特定的 IP 地址(例如 192.168.255.2)连接到我们的产品,并且该地址是固定的且无法更改。此外,主机 IP 地址也必须设置为特定 IP - 比如说 192.168.255.3。
产品支持2个以太网接口:
- 首先对 IP 寻址有严格的限制——我们称之为“第一”
- Second 没有此类限制并提供类似的功能 - 对于此示例,我们假设该接口的 IP 地址设置为 10.1.1.2/24 - 我们称其为“Second”
我需要同时运行多个docker容器,每个容器应连接到一个产品(一对一关系)。
在容器内运行的事物必须认为它们正在通过使用“第一个”网络接口(具有静态 IP 分配且无法更改的接口)来连接到产品。
我想要做的就是创建具有相同 IP 地址的容器,以假装容器内的应用程序正在使用产品的“第一个”以太网接口,然后在主机级别我想使用 IPTables 将所有流量重定向到“第二个”接口。
因此我有一个主要问题:如何创建多个具有相同IP地址的docker容器?
从您问题的确切措辞来看,docker 可以选择共享另一个容器的网络堆栈。只需运行:
docker run -d --name containera yourimage
docker run -d --net container:containera anotherimage
您将看到第二个容器具有相同的 IP 接口,甚至可以看到第一个容器正在使用的端口。
我建议您在 docker 主机上安装两个接口并绑定到您需要的主机上的 IP,然后不必担心容器的实际 IP。结果将更易于管理。以下是如何绑定到主机上的单个 IP,端口 8080 和 8888 映射到两个不同容器的端口 80:
docker run -d -p 192.168.255.2:8080:80 --name nginx8080 nginx
docker run -d -p 192.168.255.2:8888:80 --name nginx8888 nginx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)