如何将静态公共 IP 分配给 docker 容器

新手上路,请多包涵

有什么方法可以将 static public IP 分配给容器。所以容器有公网IP。客户端可以通过 IP 访问容器。

原文由 firelyu 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

对于当前发布的 Docker 版本,这是不可能的(在 Docker 背后没有大量的手动工作),尽管很少有必要。

Docker 通过使用端口映射在容器中公开网络服务,端口映射可以绑定到您主机上的特定 IP 地址。因此,如果您想在 — 上拥有一个 Web 服务器,在 192.168.10.10 192.168.10.20 拥有另一个 Web 服务器,请首先确保您的主机上可以使用以下地址:

 ip addr add 192.168.10.10/24 dev eth0
ip addr add 192.168.10.20/24 dev eth0

然后启动第一个容器:

 docker run -p 192.168.10.10:80:80 mywebserver

最后启动第二个容器:

 docker run -p 192.168.10.20:80:80 mywebserver

在上述命令中, -p 选项用于将端口映射绑定到特定的 IP 地址。现在,您有两个容器在同一端口(端口 80)上提供服务,但在不同的 IP 地址上。

原文由 larsks 发布,翻译遵循 CC BY-SA 3.0 许可协议

现在应该可以使用 docker 1.10 和 新的 docker run --ip 您现在在 docker network connect 中看到的选项。

如果指定,则在重新启动停止的容器时重新应用容器的 IP 地址。如果 IP 地址不再可用,则容器无法启动。

保证 IP 地址可用的一种方法是在创建网络时指定 --ip-range ,并从该范围之外选择静态 IP 地址。这可确保当该容器不在网络上时,不会将 IP 地址提供给另一个容器。

 $ docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 multi-host-network

$ docker network connect --ip 172.20.128.2 multi-host-network container2

另请参阅 Jessie Frazelle 的博客文章“ 所有事物 的 IP”,以及拉取请求 docker/docker#19001

原文由 VonC 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题