环境
MacOS 10.12.6 & Docker
问题
在 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。
- 安装 Tunnelblick 客户端
1 | brew cask install tunnelblick |
也可手动安装
- 克隆 docker-mac-network 项目
1 | git clone https://github.com/wojas/docker-mac-network.git |
image.png
- 找到 docker-mac-network/helpers/ 文件夹
1 | find ~ -iname docker-mac-network |
- 修改 run.sh 文件
打开 Finder 文件视窗,前往 /docker-mac-network/helpers/ 文件夹,使用 sublime 打开 run.sh 文件。
找到下图红框位置,将 ip 和 子网掩码 修改为 docker 的 ip 和子网页码。image.png
- 执行 docker-compose up
打开 terminal 终端,cd 进入 /docker-mac-network(注意,不是helpers/ 文件夹),启动 docker-compose up。
注意:此时,可能会有 [16058] Failed to execute script docker-compose 报错,请移步我的另一篇文章:https://www.jianshu.com/p/3dd305a4cb23。
1 | docker-compose up |
运行一段时间后,得到下图:
image.png
此时,打开 Finder 文件视窗,前往 /docker-mac-network/ 文件夹,发现多出一个 docker-for-mac.vpn 文件,如下图:
image.png
-
编辑 docker-for-mac.vpn 文件(该步骤必须完成)
使用 sublime 打开 docker-for-mac.vpn 文件,找到下图红框位置,
添加 comp-lzo yes,保存文件。
image.png
-
启动 docker-for-mac.vpn
双击启动 docker-for-mac.vpn ,系统提示 Tunnelblick 成功地 安装了一个配置。
点击右上角最左侧 Tunnelblick 图标 >> VPN 详情 ...,点击右下角连接。
image.png
查看 terminal 终端,得到下图,表示启动成功。
image.png
-
测试 ping docker ip
新启动一个 terminal 终端,ping 一下 docker ip 得到下图,表示 ping 得通。
image.png
联系博主:下为博主微信,欢迎骚扰
image.png