WSL docker打通容器間通信和追加端口映射


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

記住編輯的時候一定要退出docker,不然修改了也沒用。只是退出容器也不行。

也可以參考 medium.com/@lifeonkeyboardblog/adding-new-exposed-ports-to-existing-docker-container-windows-wsl-2來做,不過我沒嘗試。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM