解決方案
拋棄docker for mac自帶的linux虛擬機(盡管輕量,但其與OSX通信采用socket文件的方式),使用docker-machine
安裝virtualbox。virtualbox創(chuàng)建后,會添加一個虛擬網(wǎng)卡,可以通過ifconfig命令查看。我們實現(xiàn)的方式,就是利用這個虛擬網(wǎng)卡。
使用docker-machine創(chuàng)建默認(rèn)linux虛擬機,命令docker-machine create
切換docker環(huán)境,使用eval $(docker-machine env)命令
查看創(chuàng)建的虛擬機的ip地址:docker-machine ip default或者直接docker-machine ip,假如為192.168.99.100
執(zhí)行route命令,把192.168.99.100作為網(wǎng)關(guān),將docker容器的ip段,路由到此IP上。假如docker容器的網(wǎng)段為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, 死活不行。
原來是主機網(wǎng)絡(luò)驅(qū)動程序僅適用于Linux主機,并且不支持Docker for Mac,Docker for Windows或Docker EE for Windows Server。
居然還有這個限制。服了,浪費了一天時間。
以上這篇解決Mac下 docker 無法 ping 通宿主機的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。