为什么Docker在使用-P时没有正确暴露我的端口但是使用-p 80:80?

时间:2014-09-18 19:19:39

标签: docker

我的Dockerfile包含:

EXPOSE 80

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

danny@linux:~$ sudo docker run -d -P dart-test
               b3277a5483531f6dc23a1c807cf895103fd5333b603c1b4a352e07c9721f1a48

# Can't connect here
danny@linux:~$ curl http://localhost/
               curl: (7) Failed to connect to localhost port 80: Connection refused

danny@linux:~$ sudo docker stop b3277
               b3277

danny@linux:~$ sudo docker run -d -p 80:80 dart-test
               dfe68699bfb33ce33e8e6e1953ac828b9d31209988df64e2627d9228758438ba

# Connects fine here
danny@linux:~$ curl http://localhost/
               Hello, world!

danny@linux:~$ 

1 个答案:

答案 0 :(得分:6)

当您使用-P时,docker会将公开的端口绑定到docker主机上49153到65535范围内的随机高端口。要确定实际端口,您需要运行

docker port <CONTAINER> 80

当您使用-p 80:80时,您专门将公开的端口绑定到主机的端口80.