无法通过主机名/名称来ping通Docker容器

升级到Docker引擎1.10(从1.08)后,我注意到我的反向代理configuration不再工作。

我的所有应用程序(包括用于反向代理的Nginx)都是集装箱化的,并且通过容器名称进行通信。 这里是Nginx虚拟主机部分的一个例子:

server { server_name jobs; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://jenkins:8080; } } 

现在,我只能通过IP从Nginx容器ping Jenkins容器,但不能通过容器名称。 由于IP由于更新而不断更改,重新部署等是否有更好的避免在反向代理configuration中定义IP的联网方式?

遗产 – --link不是一个选项,因为有很多的容器。

您可以检查docker network connectdocker run附带的networking范围别名 。

使用别名启动容器允许您的NGinx在其configuration中反向代理到该别名。
在运行时,该别名将parsing为稍后启动的容器。

请参阅“ Docker Networking:自动发现桥networking中的主机名 ”中的示例。
请注意,您将需要一个键值存储来pipe理Docker 1.10+networking中的容器。


注意(2016年7月),Docker 1.12及其群模式 ,变得更加简单。
请参阅“ Docker Swarm模式下美丽的networking堆栈 ”

docker群将为您定义一个覆盖networking一个键值存储! 集装箱将看到对方。

另一个具体的例子:“ NGINX作为Docker Swarm集群的反向代理 ”