問題:
在 Mac 上啟動 docker 容器以后,宿主機 ping 不通容器的ip。
原因:
Mac和Docker是物理隔離的,詳見這篇博客(推薦!):https://www.haoyizebo.com/posts/fd0b9bd8/
解決辦法(上篇博客中的方法四):
1.首先 Mac 端通過 brew 安裝 docker-connector
brew install wenjunxiao/brew/docker-connector
2.手動修改 /usr/local/etc/docker-connector.conf 文件中的路由(也可使用博客中的命令自動配置):
注:第一步安裝后,查看的時候就有,因為需要用到 172.18網段,所以將這個取消注釋就行。
(修改:由於一開始設置的是 172.18.0.0/16,導致公司內網一些網站訪問不了,一查才發現是 172.18.x.x 都被代理,排查了一天才發現問題出在這兒,將配置重新修改為 172.18.0.0/29 ,只代理 172.18.0.1 ~ 172.18.0.7 這幾個地址,因為我只用到了 172.18.0.2、172.18.0.3、172.18.0.4 這3個ip,所以可以這樣設置,要結合自己的實際使用來設置。)
3.配置完成,直接啟動服務(需要 sudo,路由配置啟動之后仍然可以修改,並且無需重啟服務立即生效),需要輸入本機密碼
sudo brew services start docker-connector
4.使用一下命令在docker 端運行 wenjunxiao/mac-docker-connector
docker run -it -d --restart always --net host --cap-add NET_ADMIN --name connector wenjunxiao/mac-docker-connector
5.安裝完成,重試ping 操作
由上圖可見,ping通了,如果 ping不通,重啟一下電腦再試一下(前提是 ping的目標地址所在的容器,已經啟動了,可以使用 docker ps查看運行着的容器)。