Mac和Linux安装docker的实现方式是有区别的.linux中docker服务是在宿主机上的一个进程,而我们的Mac是让docker服务运行在一个虚拟机上的.
具体的差别就是,Linux默认容器和宿主机是相通的,之所以相通是因为Linux宿主机上会一个docker0的网卡,而mac上没有docker0这个网卡,导致docker容器与他的宿主机是不通的.
解决mac如何ping我们的宿主机
第一步:首先Mac端通过brew安装docker-connector
代码语言:javascript复制brew install wenjunxiao/brew/docker-connector
第二步:执行下面命令将docker所有 bridge
网络都添加到docker-connector路由
docker network ls --filter driver=bridge --format "{{.ID}}" | xargs docker network inspect --format "route {{range .IPAM.Config}}{{.Subnet}}{{end}}" >> /usr/local/etc/docker-connector.conf
代码语言:javascript复制
代码语言:javascript复制第三步:使用sudo启动docker-connector服务
代码语言:javascript复制
代码语言:javascript复制sudo brew services start docker-connector
代码语言:javascript复制
代码语言:javascript复制第四步:使用下面命令创建wenjunxiao/mac-docker-connector容器,要求使用host网络并且允许NET_ADMIN
代码语言:javascript复制
代码语言:javascript复制docker run -it -d --restart always --net host --cap-add NET_ADMIN --name connector wenjunxiao/mac-docker-connector
代码语言:javascript复制
代码语言:javascript复制第五步:docker-connector容器启动成功后,macOS宿主机即可访问其它容器网络(如果不
代码语言:javascript复制行,重启电脑即可)
代码语言:javascript复制
代码语言:javascript复制$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
681d33c80334 wenjunxiao/mac-docker-connector "mac-receiver" 30 minutes ago Up 27 minutes connector
9a5f2f8b2e91 mysql:5.6 "docker-entrypoint.s…" 4 weeks ago Up 22 minutes 0.0.0.0:3307->3306/tcp mysql2
ed9709c6210c mysql "docker-entrypoint.s…" 4 weeks ago Up 26 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysql-test
$ docker inspect 9a5f2f8b2e91 | tail -n 20
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "fab85b3e7b972d7706d67283cc0e816a332d507058f4ff1cb124bdc231595f71",
"EndpointID": "5c3837090785ad8e02add5d9edd8825ea62ea6dd50da883d0b04c2b09d7d9eb5",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:03",
"DriverOpts": null
}
}
}
}
]
$ ping 172.17.0.3
PING 172.17.0.3 (172.17.0.3): 56 data bytes
64 bytes from 172.17.0.3: icmp_seq=0 ttl=63 time=1.370 ms
64 bytes from 172.17.0.3: icmp_seq=1 ttl=63 time=1.720 ms
64 bytes from 172.17.0.3: icmp_seq=2 ttl=63 time=1.446 ms