我无法访问localhost:80
上的容器网络服务器,但我可以访问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
我的理解是我应该可以从localhost:80
访问该网站。
这不起作用。我收到错误消息
Could not get any response
我知道我正在使用Docker for Mac,因为我已经运行了命令env | grep DOCKER
并且它没有返回任何输出。
首次更新:我的/etc/hosts
看起来像是:
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
第二次更新:我还注意到,当我使用命令docker run -d -P training/webapp python app.py
运行容器时,localhost:autoGeneratedPortNumber
可以正常工作。
现在我不确定为什么两个命令(或多或少相同,唯一的区别在于指定一个端口号)具有不同的效果。
答案 0 :(得分:0)
在您的服务器文件中, 而不是在127.0.0.1(localhost)上监听服务器,而在0.0.0.0上监听 这意味着您的服务器现在将监听任何可用的网络接口。 我犯了这个错误,但是更改后,效果很好。
答案 1 :(得分:0)
问题是IPv6。您的主机文件将localhost定义为IPv6地址(“ :: 1”是IPv6语法):
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
最有可能您位于一个IPv4网络上,其中IPv6请求被忽略。当您不指定接口时,Docker也可能默认在IPv4“ 0.0.0.0”通配符接口上发布。最简单的解决方案是在所有请求中坚持使用127.0.0.1。