我使用泊塢版本1.9.1構建a34a1d5一個Ubuntu 14.04服務器主機上,我有4個容器:Redis的(基於Linux的高山3.2),MongoDB的(基於Linux的高山3.2 ),postgres(基於Ubuntu 14.04)以及運行連接到這些其他容器的應用程序(基於alpine linux 3.2)的應用程序。所有的db容器都在Dockerfile中公開它們相應的端口。泊塢窗容器無法連接到鏈接集裝箱服務
我做的數據庫容器的修改,所以他們的服務不綁定到本地主機的IP,但所有地址。這樣我就可以從應用程序容器連接到它們的全部。 爲了測試起見,我第一次運行數據庫容器中,然後該應用一個與像的命令以下:
docker run --rm --name app_container --link mongodb_container --link redis_container --link postgres_container -t localhost:5000/app_image
我輸入應用容器的終端和我確認其/ etc/hosts文件包含其他容器的IP和名稱。然後我可以ping所有的db容器。但我無法連接到他們的任何數據庫容器的端口。
簡單:telnet mongodb_container 27017
只是坐着永遠等待,如果我嘗試連接到其他分貝容器同樣的情況。如果我運行該應用程序,它也會抱怨它無法連接到指定的數據庫服務。
重要說明:我可以從主機telnet所有db容器的相應端口。
可能發生了什麼?
編輯:我會包括爲DB容器運行命令:
docker run --rm --name mongodb_container -t localhost:5000/mongodb_image
docker run --rm --name redis_container -t localhost:5000/redis_image
docker run --rm --name postgres_container -t localhost:5000/postgres_image
您可以包括所有這些其他容器中運行命令?你公開了正確的端口並使用'-p port:port'標誌嗎? –
嘗試使用'nslookup mongodb_container'或'ping mongedb_container'來查看它是否解析IP。 '--link'參數應該在你的容器中的主機文件中寫入一個條目,使它們能夠解析。 只是爲了完整性......你可以運行在這樣的容器外殼: '泊塢窗EXEC - 它 /斌/ bash' –
@ cricket_007,當然,我增加了運行命令和我,而我是測試,我停止了mongo容器,然後在其運行命令中添加了「-p 27017:27017」,但它仍然無法連接。在仔細檢查了Dockerfiles之後,我公開了正確的端口。 –