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文件。這兩個文件是壓縮過的,可以通過//www.bejson.com/進行格式化再修改,完了再壓縮放回去。
具體的操作可以參考博客 給運行中的docker容器追加端口映射。
文中沒有提到節點的增加位置:Ports在NetworkSettings下面,ExposedPorts在Config下面