我们有一组分布在多个主机上的 docker 容器。一些容器属于同一个逻辑组,即网络,因此容器应该能够直接对话,访问彼此的 IP 和端口(由 docker 随机分配)。
这种情况类似于您在一台主机上使用Docker 1.10 和 docker-compose 1.6x 中的网络,但分布在多台主机上。
我知道带有 etcd/zookeeper 的 swarm 可以管理和连接 docker 集群,但我不知道我在一个容器中的应用程序如何知道另一台主机上其他容器中另一部分的 IP 地址和端口。
我们有一组分布在多个主机上的 docker 容器。一些容器属于同一个逻辑组,即网络,因此容器应该能够直接对话,访问彼此的 IP 和端口(由 docker 随机分配)。
这种情况类似于您在一台主机上使用Docker 1.10 和 docker-compose 1.6x 中的网络,但分布在多台主机上。
我知道带有 etcd/zookeeper 的 swarm 可以管理和连接 docker 集群,但我不知道我在一个容器中的应用程序如何知道另一台主机上其他容器中另一部分的 IP 地址和端口。
您的应用不需要知道容器的 IP 地址。您可以使用服务名称或其他别名作为主机名。嵌入式 DNS 服务器会将其解析为正确的 IP 地址。
使用此设置,您根本不需要主机端口,因此您已经知道该端口,因为它是一个静态值。
本教程介绍了 Docker 的多主机网络:https ://docs.docker.com/engine/userguide/networking/get-started-overlay/