2014-09-18 143 views
5

我Dockerfile包含此:为什么Docker在使用-P但是使用-p 80:80时不能正确显示我的端口?

EXPOSE 80 

然而,如果我-P运行像我无法连接到它。与-p 80:80运行正常。

[email protected]:~$ sudo docker run -d -P dart-test 
       b3277a5483531f6dc23a1c807cf895103fd5333b603c1b4a352e07c9721f1a48 

# Can't connect here 
[email protected]:~$ curl http://localhost/ 
       curl: (7) Failed to connect to localhost port 80: Connection refused 

[email protected]:~$ sudo docker stop b3277 
       b3277 

[email protected]:~$ sudo docker run -d -p 80:80 dart-test 
       dfe68699bfb33ce33e8e6e1953ac828b9d31209988df64e2627d9228758438ba 

# Connects fine here 
[email protected]:~$ curl http://localhost/ 
       Hello, world! 

[email protected]:~$ 

回答

6

当您使用-P,码头工人将暴露的端口随机高端口绑定从范围49153至65535泊坞窗主机上。为了确定实际的端口,你需要运行

docker port <CONTAINER> 80 

当您使用-p 80:80,你特别暴露的端口绑定到主机的端口80

+0

是这个地方记录?我读[这里的文档](http://docs.docker.com/reference/run/),但看不到任何使用随机端口;它看起来像只会打开EXPOSE'd的相同端口? – 2014-09-19 10:03:25

+0

这个文档不是很清楚,但是这个信息在一些地方可用。请参阅http://docs.docker.com/userguide/dockerlinks/#network-port-mapping-refresher – dcro 2014-09-19 10:05:18

+0

正确; ta :)似乎我链接的文档应该更新以提及此处;很混乱! – 2014-09-19 10:12:58

相关问题