3

我正在为 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

我不能。

是否可以同时使用“--network host”并发布一个端口,以便可以从我的 Mac 访问它?

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

4

1 回答 1

4

没有--network标志,容器默认添加到bridge网络中;它在 Docker网桥(通常是 veth 接口)上创建了一个网络堆栈。

如果您指定--network host容器被添加到 Docker主机网络堆栈。请注意,容器将共享主机的网络命名空间,从而共享其所有安全隐患。

这意味着您不需要添加 -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 中。

于 2017-03-26T03:59:37.247 回答