2014-09-18 52 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

相關問題