为什么可以';我不能从我的postgres Docker容器映射端口吗?
我已经根据posgres的官方图片创建了一个postgres容器。我正在尝试映射端口5432,以便可以从本地主机访问容器 如果通过为什么可以';我不能从我的postgres Docker容器映射端口吗?,docker,dockerfile,Docker,Dockerfile,我已经根据posgres的官方图片创建了一个postgres容器。我正在尝试映射端口5432,以便可以从本地主机访问容器 如果通过Dockerfile公开端口,则不会发生映射。这是我的Dockerfile FROM postgres EXPOSE 5432:5432 当我构建映像并运行它时,下面是我运行docker ps时得到的结果,它在PORTS列5432/tcp 当我从Dockerfile中删除EXPOSE并构建此 FROM postgres 然后在命令行docker run-p543
Dockerfile
公开端口,则不会发生映射。这是我的Dockerfile
FROM postgres
EXPOSE 5432:5432
当我构建映像并运行它时,下面是我运行docker ps
时得到的结果,它在PORTS
列5432/tcp
当我从Dockerfile
中删除EXPOSE
并构建此
FROM postgres
然后在命令行docker run-p5432:5432-d postgres
上构建映像并传递端口,端口将被映射。当我运行docker ps
时,我在PORTS
列中看到0.0.0:5432->5432/tcp
我做错了什么?如何以映射端口的方式公开
Dockerfile
中的端口?如果要使用expose命令发布Dockerfile中定义的端口,可以使用-p
标志:
docker run -P <container>
docker运行-P
EXPOSE本身并没有做任何事情。如报告中所述:
EXPOSE指令通知Docker容器正在侦听
运行时指定的网络端口
EXPOSE指令实际上并不发布端口。信息技术
作为构建文档的人员之间的文档类型
图像和运行容器的人员,关于哪些端口
打算出版的。在运行时实际发布端口
在容器中,使用docker run上的-p标志来发布和映射一个或多个
更多端口,或使用-P标志发布所有公开的端口并映射它们
到高阶端口
可能重复的