在玩docker
时,我发现了一些奇怪的东西(至少对我而言)。我通过以下方式创建了一个容器:
docker run -p 8080:80 nginx
无论我尝试什么。我无法从http://localhost:8080
看到任何内容。最后我发现我做了
eval $(docker-machine env foo)
并切换到另一台机器。切换回默认计算机时,HTTP服务器再次正常工作。
有人可以解释为什么会这样吗?
我正在使用Docker for Mac 1.12。
答案 0 :(得分:1)
我可以从您的信息中猜到您正在使用Docker工具箱(可能使用VirtualBox)。 Docker工具箱创建一个linux主机(基于boot2docker镜像)并在该主机内运行你的nginx容器。 -p 8080:80
会将nginx中的端口80导出到主机上的8080 。因此,要从您的计算机访问它,您需要使用http://HOST-IP-ADDRESS:8080。
您可以使用docker-machine ls
Docker工具箱的替代方案是使用Docker for Mac或Docker for Windows(google)。这些消除了对VirtualBox的需求。您的计算机基本上成为运行docker容器的主机。在这种情况下,运行http://localhost:8080
会给你的nginx服务器。