2016-03-22 69 views
7

升級到Docker引擎1.10(從1.08)後,我注意到我的反向代理配置不再工作。無法通過主機名/名稱ping Docker容器

我所有的應用程序(包括用於反向代理的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使用Ping命令Nginx的容器詹金斯容器,而是通過容器名稱不再。由於IP由於更新而不斷更改,重新部署等,是否有避免在反向代理配置中定義IP的更好的聯網方式?

傳統--link不是一個選項,因爲有很多容器。

+0

我在即將到來的泊塢窗1.12和泊塢窗羣模光更新了答案。 – VonC

回答

1

您可以檢查network-scope alias哪個附帶docker network connectdocker run

使用別名啓動容器允許您的NGinx在其配置中反向代理到該別名。
在運行時,該別名將解析爲您啓動的容器以後的

查看「Docker Networking: Auto-discovering host names in a bridge network」中的示例。
請注意,您需要will need a key-value store來管理Docker 1.10+網絡中的容器。


注(2016日)與碼頭工人1.12和swarm mode,它變得更簡單。
例如見「The beautiful networking stack in Docker Swarm mode

泊塢窗羣將定義一個覆蓋網絡一個key-value存儲爲您服務!容器將看到對方。

另一個具體的例子:「NGINX as a Reverse Proxy for Docker Swarm Clusters