为什么我的Docker正在运行,但是Http没有被服务?

我最近从https://www.docker.com/products/docker-toolbox安装DockerToolbox并安装。 我testing了它,并根据快速testingdocker运行你好,世界运作良好。 现在学习如何按照https://docs.docker.com/get-started/part2/一步一步地使用它,首先我创build了一个Docker镜像:

docker build -t friendlyhello . 

然后我检查构build的图像:

 $ docker images 

运行应用程序,将我的机器的端口4000映射到容器的已发布端口80,使用-p:

 docker run -p 4000:80 friendlyhello 

在这里输入图像说明 问题是当我在浏览器中inputurl时,应用程序没有按预期的方式被提供服务。 HTTP://本地主机:4000 在这里输入图像说明

即使当我从壳中curl,我也不明白: 在这里输入图像说明

我将不胜感激关于如何解决问题的任何想法。

这很可能是由于Docker-Machine而不是你的docker镜像。 您应该尝试访问图像:

 http://[ip-address-of-vm]:4000 

原因是由于docker在虚拟机上运行而不是实际的窗口,因此端口映射是在虚拟机上完成的。 如果要使用本地主机映射访问权限,则必须设置一个规则,以便从访客机器向主机机器端口转发。 在Oracle Virtual Box中,这可以通过在虚拟机的设置下轻松完成。 在NAT适配器下,您将find端口转发button。

VM端口Fowarding

编辑:

我忘了提及这一点,但0.0.0.0将永远不可能通过networking浏览器或curl命令,因为这只是意味着它正在监听所有的networking接口。