Docker for Mac:主机networking和端口发布

我正在运行Mac的Docker。 当我跑步

docker run -d --rm --name nginx -p 80:80 nginx:1.10.3 

我可以在Mac上的80端口上访问Nginx。 当我跑步

 docker run -d --rm --name nginx --network host -p 80:80 nginx:1.10.3 

我不能。

是否有可能使用“ – networking主机”和发布一个端口,以便它可以从我的Mac到达?

或者,我可以通过HyperKit虚拟机的IP从我的Mac访问Nginx吗?

如果没有 --network标志,容器默认添加到bridgenetworking中; 它在Docker (通常是veth接口)上创build一个networking堆栈。

如果您指定--network host那么容器将被添加到Docker 主机networking堆栈中。 请注意容器将共享主机的networking名称空间,从而所有的安全影响。

这意味着你不需要添加-p 80:80,而是运行…
docker run -d --rm --name nginx --network host nginx:1.10.3

并访问http://127.0.0.1上的容器

以下链接将有助于回答HyperKit问题和当前限制:
https://docs.docker.com/docker-for-mac/networking/

macOS上没有docker0网桥

由于在Docker for Mac中实现联网的方式,在macOS中看不到docker0接口。 这个接口实际上是在HyperKit中。