解决 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 和子网掩码。

我本地 自己创建的网络段是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。

此时,打开 Finder 文件视窗,前往 /docker-mac-network/ 文件夹,发现多出一个 docker-for-mac.vpn 文件,如下图

4.1.3 编辑 docker-for-mac.vpn
- 编辑 docker-for-mac.vpn 文件(该步骤必须完成)
打开 docker-for-mac.vpn 文件,找到下图红框位置,添加 comp-lzo yes,保存文件。

4.3 启动Tunnelblick,为其添加配置

将docker-for-mac.vpn文件作为Tunnelblick的配置文件。
4.3.1 连接
点击右上角最左侧 Tunnelblick 图标 >> VPN 详情 ...,点击右下角连接。


五、测试验证
测试 ping docker 容器的IP。
到此结束。
解决 Mac 上 Docker 无法直接 ping 通的问题的更多相关文章
- CentOS7 Docker容器无法ping通宿主机ip问题解决记录
Docker服务部署启动容器发现docker容器内访问宿主机IP不通,于是进入容器内ping宿主机IP,发现无法ping通,容器IP为172.17.0.2,于是继续ping172.17.0.1也不通, ...
- 关于解决Mac使用docker安装SQL server for Linux 中文乱码问题
本人是Mac的追随者,无奈本学期数据库课要求使用Microsoft的SQL server.但是Microsoft并没有发布SQL server for Mac ,笔者使用Google搜索后, 发现可以 ...
- 解决Mac上打开txt文件乱码问题
出处:https://www.jianshu.com/p/f55ddf1e9839 经常会在Mac上打开一个txt文件,发现里面的中文都是乱码,问题是在Windows和手机上看都完全是正常的,这就十分 ...
- 解决ip和域名都能够ping通但是启动nginx无法访问网页的问题
解决思路 最近双11逛西部数码的官网看看有没有什么服务器优惠的时候,发现了可以申请一个一块钱用一整年的SSL证书,立马心动下单了,想想俺也可以用https装装X了哈哈 不过在部署完证书,并调整ngin ...
- 解决mac上Android开发时出现的ADB server didn't ACK
mac 上adb连接不到android手机可以参考:这里 xxxdeMacPro:~ xxx$ adb start-server * daemon not running. starting it n ...
- 解决Mac上adb: command not found问题
使用mac进行开发的时候,有时候需要使用adb指令来进行一些操作,但是如果没有配置过Android环境变量,可能会出现adb: command not found的问题,查了一些资料,这里记录一下ma ...
- AWS上的实例无法ping通的解决方案
首先Ping只是向服务器发送ICMP的数据包,如果在服务器的防火墙没有允许ICMP协议的数据包的话,那么即使服务器正常运行,那也是ping不同的. 对于亚马逊云服务器,首先我们要确保实例绑定的安全组允 ...
- Mac上Docker的安装
安装 安装包安装 由于历史原因, 本人使用的是安装安装的方式, 这也是很多Windows用户的习惯. 下载地址: https://download.docker.com/mac/stable/Dock ...
- 解决Mac上Android开发时adb连接不到手机问题
今天在Mac OS上进行Android开发的时候,打开eclipse连接不到手机MX4问题 1. 插入手机打开 Terminal,输入 system_profiler SPUSBDataType 2 ...
随机推荐
- C#LeetCode刷题之#56-合并区间(Merge Intervals)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3676 访问. 给出一个区间的集合,请合并所有重叠的区间. 输入: ...
- C#LeetCode刷题之#720-词典中最长的单词(Longest Word in Dictionary)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4120 访问. 给出一个字符串数组words组成的一本英语词典.从 ...
- Python对list操作的一些小技巧
Python对list操作的一些小技巧 由于要搞数学建模,于是从熟悉已久的C++转战Python.虽然才上手,但是Python的语法糖就让我大呼过瘾.不得不说相比于C/C++,Python对于数据的 ...
- Python基础入门知识点——if 语句简介
前言 if 语句是最简单的选择结构.如果满足条件就执行设定好的操作,不满足条件就执行其他其他操作. 判断的定义 如果 条件满足,才能做某件事情, 如果 条件不满足,就做另外一件事情,或者什么也不做 判 ...
- 关于word2vec我有话要说
写在前面的话: 总结一下使用word2vec一年来的一些经验,因为自己在做的时候,很难在网上搜到word2vec的经验介绍,所以归纳出来,希望对读者有用. 这里不介绍word2vec的原理,因为原理介 ...
- python 3.7 jupyter中安装 docx报错
from docx import Document报错: Import Error: No module named ‘exceptions‘ 解决办法: 使用下面的命令重新安装docx !pip i ...
- Python 使用BrowserMob Proxy + selenium 获取Ajax加密数据
BrowserMob Proxy,简称 BMP,它是一个 HTTP 代理服务,我们可以利用它截获 HTTP 请求和响应内容. 第一步:先安装 BrowserMob Proxy 的包. pip inst ...
- 开发APP遇到的问题
1.代码尽量复用 2.调用高德地图,直辖市等,省字段一定有值,市可能为空(pro:'北京市',city:[]) 3.支付密码不用组件 <template> <view> < ...
- 第3章 SparkSQL解析
第3章 SparkSQL解析 3.1 新的起始点SparkSession 在老的版本中,SparkSQL提供两种SQL查询起始点,一个叫SQLContext,用于Spark自己提供的SQL查询,一个叫 ...
- http请求工作流程
一.HTTP工作原理 HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端.HTTP协议采用了请求/响应模型.客户端向服务器发送一个请求报文,请求报文包 ...