Docker for Mac:主机网络和端口发布

4

I am running Docker for Mac. When I run

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?

1个回答

4
没有使用--network标志,默认情况下容器将被添加到bridge网络中;这将在Docker的bridge(通常是veth接口)上创建网络堆栈。
如果指定--network host,则容器将添加到Docker的host网络堆栈中。请注意,容器将共享主机的网络命名空间,并且因此会带来所有其安全影响。
这意味着您不需要添加-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中。


4
我翻译的内容如下:请问我这样说是否正确,无论采用哪种方法,都无法使Mac上的Docker容器可以在局域网中访问?这是使用Mac的一个巨大缺点。我看到了上述提到的“This interface is actually within HyperKit.”,但如果文件作者认为它不值得链接,那么暂时就别去找了(实际上,在Mac上搜索时会出现很多“尚未准备好”的结果)。 - Scott Prive
我说的对吗?使用这两种方法,根本没有办法使Mac docker容器在局域网中可访问吗?这是使用Mac的一个巨大缺点。-- 这也是我正在思考和想知道的问题... - sandinmyjoints

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接