2016-08-01 141 views
0

我有兩個集裝箱正在運行:c1和c2。碼頭集裝箱無法連接到另一個碼頭集裝箱打開的端口

C1正在偵聽端口2181和 C2被連接到端口2181

問題是C2未能在上述端口連接到C1,我不知道爲什麼。

當我運行連接到C1不在容器中的代碼時,它工作正常。所以我知道C1正在運行,端口正確顯示。就在我將應用程序放在它自己的容器中時,該端口不再可見。

我已經嘗試了C2內的lsof,它沒有列出,這對於它失敗的原因很有意義。

任何線索我需要看下一個將不勝感激。

我用的是碼頭工人,組成這樣的容器應該是相同的網絡組默認情況下:

下面是我撰寫的文件:

version: '2' 
services: 
    c1: 
    build: . 
    volumes: 
     - .:/code 
    depends_on: 
     - c2 
    c2: 
    image: jplock/zookeeper 
    ports: 
     - "2181:2181" 
     - "2888:2888" 
     - "3888:3888" 

在C1,發起者是使用URI本地主機: 2181

+1

向我們展示您的代碼?不是全部,但足以準確地重現問題。具體來說,你用什麼地址連接到第二個容器? – larsks

+0

啊,說說你應該使用compose文件中列出的容器名來代替主機名。我仍然參考localhost。我會嘗試一下,並會讓你知道。 – JamesC

+0

謝謝拉爾斯克你幫我到那裏。 – JamesC

回答

1

如果你遇到這個帖子,這可能會有所幫助。

使用泊塢窗,撰寫,容器獲取設置主機名匹配泊塢窗撰寫文件中的服務別名,請參閱文檔在這裏:

https://docs.docker.com/compose/networking/

修改報價,以適應這個用例

每個容器現在可以查找主機名(即c2)並獲取適當的容器的IP地址。例如,c1應用程序代碼可以連接到URL // c2:2181。