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

时间:2016-03-22 22:24:45

标签: docker

升级到Docker引擎1.10(从1.08开始)后,我注意到我的反向代理配置不再有效了。

我的所有应用程序(包括反向代理的Nginx)都是容器化的,并通过容器名称进行通信。以下是Nginx中虚拟主机部分的示例:

--link

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

传统re.split不是一个选项,因为有很多容器。

1 个答案:

答案 0 :(得分:1)

您可以查看network-scope aliasdocker network connect附带的docker run

启动带别名的容器允许您的NGinx在其配置中将代理转换为该别名。
在运行时,该别名将解析为您以后的。

请参阅" Docker Networking: Auto-discovering host names in a bridge network"中的示例 请注意,您will need a key-value store要在docker 1.10+网络中管理容器。

注意(2016年7月)与docker 1.12及其 swarm mode ,它变得更加简单。
例如,参见" The beautiful networking stack in Docker Swarm mode"

docker swarm将为您定义一个覆盖网络一个键值存储!容器会看到彼此。

另一个具体的例子:" NGINX as a Reverse Proxy for Docker Swarm Clusters"