最近在docker中搭建一個服務,需要有多個容器通訊。這裡簡單記錄一下如何在容器間進行通訊,同時說一下已經存在的容器如何追加埠對映。
增加網橋
容器間通訊的目的是不適用IP而是使用容器名稱進行網路通訊,因為容器重啟IP可能會變。
首先在wsl中增加自己的網橋:
docker network create -d bridge my-bridge
通過docker network ls
可以看到有一個my-bridge的網橋:
假設我們有兩個容器,一個加tomcat10,一個叫mysql57master,分別加入網橋:
docker network connect my-bridge tomcat10
docker network connect my-bridge mysql57master
這樣docker exec -it tomcat10 bash
進入其他一個容器,通過ping
可以發現網路現在通了:
追加埠對映
如果啟動容器的時候忘記設定埠對映了改咋辦?總不能把現在的容器commit成大映象再執行吧。尤其我使用客戶端啟動時看不到對映選項
docker的每個容器都有配置檔案,位置在資源管理器的Linux下面:
進來以後在\version-pack-data\community\docker\containers
下面找到對應的容器:
根據容器的ID點進去,修改其中的hostconfig.json和config.v2.json檔案。這兩個檔案是壓縮過的,可以通過https://www.bejson.com/進行格式化再修改,完了再壓縮放回去。
具體的操作可以參考部落格 給執行中的docker容器追加埠對映。
文中沒有提到節點的增加位置:Ports在NetworkSettings下面,ExposedPorts在Config下面