解决 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 通的问题的更多相关文章

  1. CentOS7 Docker容器无法ping通宿主机ip问题解决记录

    Docker服务部署启动容器发现docker容器内访问宿主机IP不通,于是进入容器内ping宿主机IP,发现无法ping通,容器IP为172.17.0.2,于是继续ping172.17.0.1也不通, ...

  2. 关于解决Mac使用docker安装SQL server for Linux 中文乱码问题

    本人是Mac的追随者,无奈本学期数据库课要求使用Microsoft的SQL server.但是Microsoft并没有发布SQL server for Mac ,笔者使用Google搜索后, 发现可以 ...

  3. 解决Mac上打开txt文件乱码问题

    出处:https://www.jianshu.com/p/f55ddf1e9839 经常会在Mac上打开一个txt文件,发现里面的中文都是乱码,问题是在Windows和手机上看都完全是正常的,这就十分 ...

  4. 解决ip和域名都能够ping通但是启动nginx无法访问网页的问题

    解决思路 最近双11逛西部数码的官网看看有没有什么服务器优惠的时候,发现了可以申请一个一块钱用一整年的SSL证书,立马心动下单了,想想俺也可以用https装装X了哈哈 不过在部署完证书,并调整ngin ...

  5. 解决mac上Android开发时出现的ADB server didn't ACK

    mac 上adb连接不到android手机可以参考:这里 xxxdeMacPro:~ xxx$ adb start-server * daemon not running. starting it n ...

  6. 解决Mac上adb: command not found问题

    使用mac进行开发的时候,有时候需要使用adb指令来进行一些操作,但是如果没有配置过Android环境变量,可能会出现adb: command not found的问题,查了一些资料,这里记录一下ma ...

  7. AWS上的实例无法ping通的解决方案

    首先Ping只是向服务器发送ICMP的数据包,如果在服务器的防火墙没有允许ICMP协议的数据包的话,那么即使服务器正常运行,那也是ping不同的. 对于亚马逊云服务器,首先我们要确保实例绑定的安全组允 ...

  8. Mac上Docker的安装

    安装 安装包安装 由于历史原因, 本人使用的是安装安装的方式, 这也是很多Windows用户的习惯. 下载地址: https://download.docker.com/mac/stable/Dock ...

  9. 解决Mac上Android开发时adb连接不到手机问题

    今天在Mac OS上进行Android开发的时候,打开eclipse连接不到手机MX4问题 1. 插入手机打开 Terminal,输入 system_profiler  SPUSBDataType 2 ...

随机推荐

  1. java web 下载文件 response.setHeader()的用法 (转载)

    response.setHeader()的用法 response.setHeader()下载中文文件名乱码问题 收藏 1. HTTP消息头 (1)通用信息头 即能用于请求消息中,也能用于响应信息中,但 ...

  2. NodeJs nrm 和 nvm

    nrm 和 nvm nrm (npm registry manager)是npm的镜像源管理工具 nvm (node version manager)是nodejs的版本管理工具 nrm # nrm ...

  3. 解决用anaconda安装scrapy后,在使用scrapy时报错

    python版本为3.7 因为用anaconda安装scrapy非常方便,会自动下载所依赖的包, 所以就使用anaconda安装scrapy, 非常舒服,安装很成功 conda install scr ...

  4. Android 开发学习进程0.16 layout_weight属性 R文件关联XML Module

    layout_weight属性 layout_weight属性我们常常用到,但有时候会发现它还有一些奇怪的属性,比如大多数使用时会把宽度设置成0,但要是宽度不设置成0会有什么效果? layout_we ...

  5. 【luogu1613】跑路 - 倍增+Floyd

    题目描述 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零.可是小A偏偏又有赖床的坏毛病.于是为了保住自己的工资,小A买了一个十分牛B的空间跑路器,每秒钟 ...

  6. 第1章 Hive入门

    第1章 Hive入门 1.1 什么是Hive Hive:由Facebook开源用于解决海量结构化日志的数据统计. Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提 ...

  7. 玩转Spring——Spring IOC/DI

    什么是IOCioc :Inversion of Control,即控制反转. 它不是一种技术,而是一种设计思想,即java程序中获取对象的方式发生反转,由最初的new方式创建,转变成由第三方框架创建. ...

  8. 焦大翻译:提防一些seo错误认知(完整版)

    http://www.wocaoseo.com/thread-179-1-1.html 多人在开始做seo的时候,都曾经尝试通过黑盒测试来找出哪些因素对排名有效果. 黑盒测试是我们IT行业常用术语,它 ...

  9. Mysql常用的一些命令

    1.登录Mysql数据库, 打开终端命令输入窗口,输入命令:mysql -u <账户名,一般是root> -p <密码>. 2.显示所有的数据库: show databases ...

  10. Python 爬虫+tkinter界面 实现历史天气查询

    文章目录 一.实现效果 1. python代码 2. 运行效果 二.基本思路 1. 爬虫部分 2. tkinter界面 一.实现效果 很多人学习python,不知道从何学起.很多人学习python,掌 ...