解决Mac下 docker 无法 ping 通宿主机的问题

解决方案

抛弃docker for mac自带的linux虚拟机(尽管轻量,但其与OSX通信采用socket文件的方式),使用docker-machine

安装virtualbox。virtualbox创建后,会添加一个虚拟网卡,可以通过ifconfig命令查看。我们实现的方式,就是利用这个虚拟网卡。

使用docker-machine创建默认linux虚拟机,命令docker-machine create

切换docker环境,使用eval $(docker-machine env)命令

查看创建的虚拟机的ip地址:docker-machine ip default或者直接docker-machine ip,假如为192.168.99.100

执行route命令,把192.168.99.100作为网关,将docker容器的ip段,路由到此IP上。假如docker容器的网段为172.17.0.0/16,那么使用sudo route -n add -net 172.17.0.0/16 192.168.99.100命令,添加路由信息。

启动一个docker容器,此次测试使用redis:alpine镜像:docker run -d redis:alpine。查看运行的镜像IP。并ping测试。如无意外,宿机目前可以ping同容器了。

补充:

eval "$(docker-machine env -u)"

它将取消DOCKER_*变量。

为了记录,这是输出docker-machine env -u:

unset DOCKER_TLS_VERIFY
unset DOCKER_HOST
unset DOCKER_CERT_PATH
unset DOCKER_MACHINE_NAME

补充知识:Mac Docker Host模式不能用

今天在Mac搭建docker中安装fastdfs, 用host模式启动tracker与storage, 死活不行。

原来是主机网络驱动程序仅适用于Linux主机,并且不支持Docker for Mac,Docker for Windows或Docker EE for Windows Server。

居然还有这个限制。服了,浪费了一天时间。

以上这篇解决Mac下 docker 无法 ping 通宿主机的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Docker容器访问宿主机网络的方法

    最近部署一套系统,使用nginx作反向代理,其中nginx是使用docker方式运行: $ docker run -d --name nginx $PWD:/etc/nginx -p 80:80 -p 443:443 nginx:1.15 需要代理的API服务运行在宿主机的 1234 端口, nginx.conf 相关配置如下: server { ... location /api { proxy_pass http://localhost:1234 } ... } 结果访问的时候发现老是报 5

  • docker容器无法访问宿主机端口的解决

    最近在工作时遇到一个问题,docker容器无法访问宿主机的redis,telent6379端口不通. 经排查发现,该服务器启用了防火墙,防火墙把6379的端口的访问授权给docker0网卡访问即可. 操作如下: firewall-cmd --permanent --zone=trusted --change-interface=docker0 firewall-cmd --reload 补充知识:docker 启动mysql 容器出错Ports are not available: listen

  • docker容器通过ping直接运行获取公网IP操作

    通过容器获取本机的公网ip 可以用本地IP 多服务注册中心 把命令改居ping 执行可以拿到不同的服务器信息 public static String getIfconfigIP() { BufferedReader in = null; String outline = ""; // timeOut window为ms linux 为s Runtime r = Runtime.getRuntime(); // 将要执行的ping命令,此命令是windows格式的命令 String p

  • 解决Mac下 docker 无法 ping 通宿主机的问题

    解决方案 抛弃docker for mac自带的linux虚拟机(尽管轻量,但其与OSX通信采用socket文件的方式),使用docker-machine 安装virtualbox.virtualbox创建后,会添加一个虚拟网卡,可以通过ifconfig命令查看.我们实现的方式,就是利用这个虚拟网卡. 使用docker-machine创建默认linux虚拟机,命令docker-machine create 切换docker环境,使用eval $(docker-machine env)命令 查看创

  • 解决VMware仅主机模式虚拟机无法ping通物理机问题

    问题描述 在VMware Workstation中新建了一个虚拟机CentOS7,网络适配器选择的是"仅主机模式",结果,物理机ping不通虚拟机,虚拟机也ping不通物理机. 原因分析 物理机ping不通虚拟机 (1)虚拟机防火墙的原因,关闭防火墙即可 虚拟机ping不通物理机 (1)ping的地址不对,由于是"仅主机模式",所以物理机和虚拟机通讯用的网络适配器是VMnet1,因此,ping的时候应该写VMnet1的地址,ping它才是ping宿主机 (2)物理机

  • 解决Mac下使用python的坑

    操作系统:macOS High Sierra 10.13.3 Python3.6 因为此版本自带python2.7,就下载并安装了anaconda2的版本,结果使用的时候系统自带的python和anaconda里的python冲突,也就是装包的时候只在一处装了,另一处却不能使用.因此要配置环境变量,替代到系统自带的版本. python2.7总会发生中文字体乱码的情况,果断放弃,准备使用anaconda3. 1.安装anaconda3 在官网下载,并安装,直接都是下一步. 2.修改环境变量 在命令

  • 解决Mac下安装nmp的淘宝镜像失败问题

    安装命令如下: npm install -g cnpm --registry=https://registry.npm.taobao.org --verbose 提示报错,信息如下: npm ERR! Darwin 16.6.0 npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "cnpm" "--reg

  • 解决Mac下首次安装pycharm无project interpreter的问题

    Pycharm本身并不带编译器,所以第一次用需要自己下载编译器插件. 1.首先去 https://www.python.org/downloads/ 这个网址去下载对应的python版本 (windows用户也是去这个网址下载): 2.下载安装好后打开pycharm: 3.点击菜单栏pycharm->Preferences 4.在搜索栏里搜索interpreter,点击project interpreter,然后找到一个"齿轮"的符号,选择add : 5.点击第一项(Virtua

  • docker容器间跨宿主机通信-基于overlay的实现方法

    overlay网络解析 内置跨主机的网络通信一直是Docker备受期待的功能,在1.9版本之前,社区中就已经有许多第三方的工具或方法尝试解决这个问题,例如Macvlan.Pipework.Flannel.Weave等. 虽然这些方案在实现细节上存在很多差异,但其思路无非分为两种: 二层VLAN网络和Overlay网络 简单来说,二层VLAN网络解决跨主机通信的思路是把原先的网络架构改造为互通的大二层网络,通过特定网络设备直接路由,实现容器点到点的之间通信.这种方案在传输效率上比Overlay网络

  • docker内服务访问宿主机服务的实现

    目录 1. 场景 2. 解决 3. 总结 4. 参考 1. 场景 使用windows, wsl2 进行日常开发测试工作. 但是wsl2经常会遇到网络问题.比如今天在测试一个项目,核心功能是将postgres 的数据使用开源组件synch 同步到clickhouse 这个工作. 测试所需组件 postgres kafka zookeeper redis synch容器 最开始测试时,选择的方案是, 将上述五个服务使用 docker-compose 进行编排, network_modules使用ho

  • Docker MySQL无法被宿主机访问的问题解决

    目录 1 问题描述 2 原因 3 解决方案 1 问题描述 Docker启动MySQL容器后,创建一个localhost访问的用户: create user test@localhost identified by 'test'; 但是在宿主机中无法通过该用户登录: mycli -u test 2 原因 在Docker中的MySQL创建localhost的用户只能在Docker内部访问,而不能通过外部访问. 至于为什么能在宿主机访问root,是因为默认存在两个root,分别是: root@loca

  • docker 实现容器与宿主机无缝调用shell命令

    如下所示: nsenter -t 1 -m -u -n -i sh -c "echo hello world! " docker容器加上privilege权限, 设置pid: "host" 补充:在宿主机执行docker容器中的shell脚本或命令 常见命令形式: docker exec -it master /bin/bash -c 'echo $PATH' docker exec -it master /bin/bash -c 'cd /home/bigdata

  • 详解如何解决docker容器无法通过IP访问宿主机问题

    问题起源 在使用 docker 的过程中我不幸需要在 docker 容器中访问宿主机的 80 端口, 而这个 80 端口是另外一个容器 8080 端口映射出去的. 当我在容器里通过 docker 的网桥 172.17.0.1 访问宿主机时, 居然发现: curl: (7) Failed to connect to 172.17.0.1 port 80: No route to host 查找问题原因 可以确定的是容器与宿主机是有网络连接的, 因为可以在容器内部通过 172.17.0.1 Ping

随机推荐