如何在Docker群集中获取服务的Ips?

我正在运行一个有2个节点的docker swarm模式集群,并部署5个服务:[mysql,mongo,app],并希望filldb与我的pipe理器节点中的一个有用的脚本。 但我不能从节点获取容器中的数据库服务?
例如:mysql -h {{mysql_service_host}} ….

如何从节点获取容器IP或服务IP? 是否有可能在Docker群中使用模式主机?

对于属于同一networking的服务(容器),您可以简单地使用服务名称。 Docker包含一个处理ip分辨率的DNSparsing器。 您将需要使您的服务成为覆盖networking的一部分。 覆盖networking可以跨越多个节点。

例如:

services: myapp: image: myimage:1.0 deploy: replicas: 1 networks: - privnet maindb: image: mysql deploy: replicas: 1 networks: - privnet networks: privnet: driver: overlay 

这创build了具有两个服务的覆盖networking。 相应的容器可以在任何节点上创build。 哪里没关系。 他们都将能够相互沟通,因为他们是同一个覆盖networking的一部分。 在myapp中,您可以使用maindb作为mysql服务的DNS。 这将由Docker解决在privnetnetworking内的适当的IP。

顺便说一下,一个有2个节点的群集没有什么意义。 Swarm需要至less3个节点来使Raft共识协议起作用。 https://raft.github.io