如何将 Docker 容器配置为具有非默认 IP 地址的唯一 IP 地址?

如何将 Docker 容器配置为具有非默认 IP 地址的唯一 IP 地址?

如何将 Docker 容器配置为具有非默认 IP 地址的唯一 IP 地址?

Docker 容器将运行 Apache 或某些 Web 服务。这些 Docker 容器将共享一台拥有一张物理网卡的主机。这些容器必须能够通过通过端口 80 进行调用的唯一 IP 地址来识别。工作站将使用 HTTP 来下载文件。

我尝试在 Docker 主机上创建虚拟 IP 地址。但这导致与服务器的网络连接中断。

我尝试安装 Docker 覆盖层,但我认为它不会帮助我让工作站使用对容器的 HTTP 请求。 Docker 覆盖似乎适合容器间连接。

我考虑过使用互锁,但我不想使用 Swarm。

答案1

这里最简单的解决方案是向主机添加额外的地址,然后将一个容器绑定到每个地址。例如,假设您的主机是 192.168.1.20,您可以添加其他地址,如下所示:

ip addr add 192.168.1.21/32 dev eth0
ip addr add 192.168.1.22/32 dev eth0
ip addr add 192.168.1.23/32 dev eth0

然后,在启动容器时,将容器中的 80 端口发布到特定主机地址上的 80 端口,如下所示:

docker run -p 192.168.1.21:80:80 mywebimage

(这不会更改容器的 IP 地址;它会在给定的 IP 地址和端口与容器的内部 IP 地址和端口之间创建映射。)

请注意,此处显示的地址配置将不是坚持不懈;如果重新启动主机,您将丢失地址。此类地址的具体配置方式因发行版而异。有关详细信息,请参阅您的分发文档。

相关内容