无法访问localhost:80上的容器的Web服务器

bre*_*top 5 docker docker-machine

我无法访问容器的Web服务器,localhost:80但我可以访问Web服务器127.0.0.1:80.

我究竟做错了什么?

我在Mac上安装了docker Version 1.12.2-rc1-beta27(build:12496).

我用命令运行了一个容器docker run -d -p 80:80 training/webapp python app.py.

容器具有以下属性

$docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
baaf4676e548        training/webapp     "python app.py"     22 minutes ago      Up 22 minutes       0.0.0.0:80->5000/tcp   big_volhard
Run Code Online (Sandbox Code Playgroud)

我的理解是我应该可以访问该网站localhost:80.

这不起作用.我收到错误消息

Could not get any response
Run Code Online (Sandbox Code Playgroud)

我知道我使用Docker for Mac,因为我已经运行了命令env | grep DOCKER并且它没有返回任何输出.

第一次更新:我/etc/hosts看起来像:

127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost
Run Code Online (Sandbox Code Playgroud)

第二次更新:我也注意到当我使用命令运行容器时docker run -d -P training/webapp python app.py,然后localhost:autoGeneratedPortNumber工作.

现在我不确定为什么两个命令(或多或少相同,唯一的区别在于指定一个端口号)具有不同的效果.

小智 1

在您的服务器文件中,不要在 127.0.0.1 (localhost) 处侦听服务器,而是在 0.0.0.0 处侦听,这意味着您的服务器现在将侦听任何可用的网络接口。我犯了这个错误,但是改了之后,效果很好。