升级到Docker引擎1.10(从1.08开始)后,我注意到我的反向代理配置不再有效了。
我的所有应用程序(包括反向代理的Nginx)都是容器化的,并通过容器名称进行通信。以下是Nginx中虚拟主机部分的示例:
--link
现在,我只能通过IP ping Nginx容器中的Jenkins容器,但不能再通过容器名称ping容器。由于更新,重新部署等不断更改IP,是否有更好的联网方式避免在反向代理配置中定义IP?
传统re.split
不是一个选项,因为有很多容器。
答案 0 :(得分:1)
您可以查看network-scope alias和docker 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"