gpt4 book ai didi

networking - 如何创建具有相同内部 IP 地址的 docker 容器?

转载 作者:行者123 更新时间:2023-12-02 18:08:37 25 4
gpt4 key购买 nike

我有一个环境,我需要在其中将一些外部软件运行到 Docker 容器中。该软件试图通过特定 IP 地址连接到我们的产品 - 比如说 192.168.255.2 - 该地址是固定的,无法更改。此外,主机 IP 地址也必须设置为特定 IP - 例如 192.168.255.3。

产品支持 2 个以太网接口(interface):

  • 他们中的第一个对 IP 地址有严格的限制 - 我们称之为“第一个”
  • second 没有此类限制并提供类似的功能 - 对于此示例,我们假设此接口(interface)的 IP 地址设置为 10.1.1.2/24 - 我们称其为“second”

我需要同时运行多个 docker 容器,每个容器应连接到一个产品(一对一的关系)。

在容器内运行的东西必须认为它们通过使用“第一个”网络接口(interface)(具有静态 IP 分配且无法更改的接口(interface))来连接到产品。

我想做的就是创建具有相同 IP 地址的容器,以假装容器内的应用程序正在使用产品的“第一个”以太网接口(interface),然后在主机级别我想使用 IPTables 将所有流量重定向到“第二个”接口(interface).

因此我遇到了一个主要问题:如何创建具有相同 IP 地址的多个 docker 容器?

最佳答案

从您问题的确切措辞来看,docker 可以选择共享另一个容器的网络堆栈。只需运行:

docker run -d --name containera yourimage
docker run -d --net container:containera anotherimage

您会看到第二个容器具有相同的 IP 接口(interface),甚至可以看到第一个容器正在使用的端口。

我建议您在 docker 主机上安装这两个接口(interface)并绑定(bind)到您需要的主机上的 IP,然后不用担心容器的实际 IP。结果将更易于管理。以下是如何绑定(bind)到主机上的单个 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

关于networking - 如何创建具有相同内部 IP 地址的 docker 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41376365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com