我已经从官方的posgres镜像创建了一个postgres容器。我正在尝试映射端口5432,以便可以从我的本地主机访问容器。
如果我通过Dockerfile公开端口,映射就不会发生。这是我的Dockerfile
FROM postgres
EXPOSE 5432:5432当我构建映像并运行它时,下面是我运行docker ps时得到的结果。在PORTS列5432/tcp中看到以下内容
当我从Dockerfile中删除EXPOSE并构建以下代码时
FROM postgres然后构建映像并在命令行docker run -p 5432:5432 -d postgres上传递端口,则会映射端口。当我运行docker ps时,我在PORTS列中看到0.0.0.0:5432->5432/tcp。
我做错了什么?如何以映射端口的方式公开Dockerfile中的端口?
发布于 2019-04-21 02:29:51
如果您希望使用EXPOSE命令发布Dockerfile文件中定义的端口,则可以使用-P标志:
docker run -P <container>EXPOSE本身实际上不会做任何事情。正如在Docker documentation中提到的
EXPOSE指令通知Docker容器在运行时监听指定的网络端口。
EXPOSE指令实际上并不发布端口。它作为构建镜像的人和运行容器的人之间的一种类型的文档,关于要发布的端口。要在运行容器时实际发布端口,请在docker run上使用-p标志来发布和映射一个或多个端口,或者使用-P标志来发布所有公开的端口并将它们映射到高位端口。
https://stackoverflow.com/questions/55776514
复制相似问题