WSL docker打通容器間通訊和追加埠對映

山不在高水不在深發表於2021-12-23

最近在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下面

相關文章