docker:端口映射无法在非默认机器上运行

时间:2016-09-05 05:54:45

标签: linux networking docker docker-machine

在玩docker时,我发现了一些奇怪的东西(至少对我而言)。我通过以下方式创建了一个容器:

docker run -p 8080:80 nginx

无论我尝试什么。我无法从http://localhost:8080看到任何内容。最后我发现我做了

eval $(docker-machine env foo)

并切换到另一台机器。切换回默认计算机时,HTTP服务器再次正常工作。

有人可以解释为什么会这样吗?

我正在使用Docker for Mac 1.12。

1 个答案:

答案 0 :(得分:1)

我可以从您的信息中猜到您正在使用Docker工具箱(可能使用VirtualBox)。 Docker工具箱创建一个linux主机(基于boot2docker镜像)并在该主机内运行你的nginx容器。 -p 8080:80会将nginx中的端口80导出到主机上的8080 。因此,要从您的计算机访问它,您需要使用http://HOST-IP-ADDRESS:8080

您可以使用docker-machine ls

找到您的主机IP

Docker工具箱的替代方案是使用Docker for Mac或Docker for Windows(google)。这些消除了对VirtualBox的需求。您的计算机基本上成为运行docker容器的主机。在这种情况下,运行http://localhost:8080会给你的nginx服务器。