解決 Mac 上 Docker 無法直接 ping 通的問題


解決 Mac 上 Docker 無法直接 ping 通的問題

原文連接

一、背景

Mac os Mojave 10.14.3
Docker Desktop community 2.3.0.4

二、問題

在 Mac 上啟動 docker 容器以后,宿主機 ping 不通容器的ip。

三、原因

在宿主機上看不到 docker0,無法訪問容器所在的網絡,導致宿主機 ping 不通 Docker 給 Container 所分配的 IP 地址。
詳情參見官網:https://docs.docker.com/docker-for-mac/networking/#there-is-no-docker0-bridge-on-macos
如看完官網還是不懂,牆裂推薦這篇文章:https://windmt.com/2019/08/30/docker-for-mac-network/

四、解決

解決問題的方案,是 github 上的 docker-for-mac(https://github.com/wojas/docker-mac-network) 項目,主要方法是使用 OpenVpn 來訪問 docker。

4.1安裝 Tunnelblick 客戶端

brew cask install tunnelblick

也可以手動安裝,這里建議手動安裝 brew在國內太慢了。
tunnelblick的地址 https://github.com/Tunnelblick/Tunnelblick/releases

4.2 克隆  docker-mac-network 項目

git clone https://github.com/wojas/docker-mac-network.git

4.2.1 修改 run.sh 文件

  • 打開 Finder 文件視窗,前往 /docker-mac-network/helpers/ 文件夾,打開 run.sh 文件。找到下圖紅框位置,將 ip 和 子網掩碼 修改為 docker 的 ip 和子網掩碼。

image.png
我本地 自己創建的網絡段是172.19。

4.1.2 執行 docker-compose up

  • 在 /docker-mac-network 目錄下執行 docker-compose up 命令

注意:此時,可能會有 [16058] Failed to execute script docker-compose 報錯,請移步我的另一篇文章:https://www.jianshu.com/p/3dd305a4cb23
image.png
此時,打開 Finder 文件視窗,前往 /docker-mac-network/ 文件夾,發現多出一個 docker-for-mac.vpn 文件,如下圖
image.png

4.1.3 編輯 docker-for-mac.vpn

  • 編輯 docker-for-mac.vpn 文件(該步驟必須完成)

打開 docker-for-mac.vpn 文件,找到下圖紅框位置,添加 comp-lzo yes,保存文件。
image.png

4.3 啟動Tunnelblick,為其添加配置

image.png
將docker-for-mac.vpn文件作為Tunnelblick的配置文件。

4.3.1 連接

點擊右上角最左側 Tunnelblick 圖標 >> VPN 詳情 ...,點擊右下角連接。
image.png
image.png

五、測試驗證

測試 ping docker 容器的IP。

到此結束。


免責聲明!

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



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