我的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:~$
答案 0 :(得分:6)
当您使用-P
时,docker会将公开的端口绑定到docker主机上49153到65535范围内的随机高端口。要确定实际端口,您需要运行
docker port <CONTAINER> 80
当您使用-p 80:80
时,您专门将公开的端口绑定到主机的端口80.