Mac 下 docker 无法 ping 通宿主机的解决方案
Mac 下 docker 无法 ping 通宿主机的解决方案本方案总结自:https://blog.csdn.net/Mr0o0rM/article/details/80683115https://cloud.tencent.com/developer/ask/219563解决方案抛弃docker for mac自带的linux虚拟机(尽管轻量,但其与OSX通信采用socket文件的方式...
Mac 下 docker 无法 ping 通宿主机的解决方案
本方案总结自:
https://blog.csdn.net/Mr0o0rM/article/details/80683115
https://cloud.tencent.com/developer/ask/219563
解决方案
抛弃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
更多推荐
所有评论(0)