Kir*_*ran 5 networking tcp tcp-ip docker
如何将 Docker 容器配置为具有非默认 IP 地址的唯一 IP 地址?
Docker 容器将运行 Apache 或某些 Web 服务。这些 Docker 容器将共享一台具有一个物理网卡的主机。这些容器必须可以通过唯一的 IP 地址通过端口 80 进行调用来识别。工作站将使用 HTTP 下载文件。
我尝试在 Docker 主机上创建虚拟 IP 地址。但这导致与服务器的网络连接中断。
我尝试安装 Docker 覆盖,但我认为它不会帮助我让工作站使用对容器的 HTTP 请求。Docker 覆盖似乎面向容器间连接。
我考虑过使用互锁,但我宁愿不使用 Swarm。
这里最简单的解决方案是向主机添加额外的地址,然后将一个容器绑定到每个地址。例如,假设您的主机是 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
Run Code Online (Sandbox Code Playgroud)
然后,在启动容器时,将容器中的 80 端口发布到特定主机地址上的 80 端口,如下所示:
docker run -p 192.168.1.21:80:80 mywebimage
Run Code Online (Sandbox Code Playgroud)
(这不会更改容器的 IP 地址;它会在给定的 IP 地址和端口与容器的内部 IP 地址和端口之间创建映射。)
请注意,此处显示的地址配置不会是持久的;如果重新启动主机,您将丢失地址。此类地址的具体配置方式因发行版而异。有关详细信息,请参阅您的分发文档。