2016-11-23 104 views
2

我在想如何鏈接已經運行的docker容器。這可能嗎?如何將兩個正在運行的碼頭集裝箱連接在一起?

例如,如果我有2個應用程序(app1app2)圖像和單個運行mongo容器,我可以很容易地將它們鏈接,當我做run在他們以下:

docker run -d -name app1 --link mongo:mongo -p 8080:8080 app1 
docker run -d -name app2 --link mongo:mongo -p 8081:8081 app2 

這個偉大的工程。但是,假設我已經運行了app1app2而沒有將它們鏈接到mongo容器的開始,我該如何將應用程序的容器鏈接到正在運行的mongo容器?

+0

在默認網絡或用戶定義的網絡上? – R0MANARMY

+2

我認爲我們不能。但是如果你使用'''docker-compose''',則不再需要''--link'''。 – Tuan

+0

請參閱https://github.com/docker/docker/issues/3155最後您會看到'使用碼頭工具創建網絡創建$ NETWORK_NAME 使用碼頭工具創建您的容器create --net $ NETWORK_NAME 然後,您可以參考到通過主機名共享相同網絡的容器(或者是傳入來創建/運行的名稱,或者是docker inspect --format'{{.Config.Hostname}}'$ CONTAINER_ID).' – user2915097

回答

0

您需要將端口從您的容器公開到主機,然後容器可以通過您的HOST_IP(從容器內部默認爲172.0.0.1)互相ping通。

例:你的app是在8080上運行,你的mongo是在8000上運行(暴露端口到主機) EXEC您的應用程序容器內,並獲得$ HOST_IP使用ifconfig

之後,嘗試ping你的蒙戈服務

curl $HOST_IP:8000 (I'm not sure about this command ^^ if it's not ok, google it) 
相關問題