首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能从postgres Docker容器映射端口?

为什么我不能从postgres Docker容器映射端口?
EN

Stack Overflow用户
提问于 2019-04-21 02:25:49
回答 1查看 178关注 0票数 0

我已经从官方的posgres镜像创建了一个postgres容器。我正在尝试映射端口5432,以便可以从我的本地主机访问容器。

如果我通过Dockerfile公开端口,映射就不会发生。这是我的Dockerfile

代码语言:javascript
复制
FROM postgres

EXPOSE 5432:5432

当我构建映像并运行它时,下面是我运行docker ps时得到的结果。在PORTS5432/tcp中看到以下内容

当我从Dockerfile中删除EXPOSE并构建以下代码时

代码语言:javascript
复制
FROM postgres

然后构建映像并在命令行docker run -p 5432:5432 -d postgres上传递端口,则会映射端口。当我运行docker ps时,我在PORTS列中看到0.0.0.0:5432->5432/tcp

我做错了什么?如何以映射端口的方式公开Dockerfile中的端口?

EN

回答 1

Stack Overflow用户

发布于 2019-04-21 02:29:51

如果您希望使用EXPOSE命令发布Dockerfile文件中定义的端口,则可以使用-P标志:

代码语言:javascript
复制
docker run -P <container>

EXPOSE本身实际上不会做任何事情。正如在Docker documentation中提到的

EXPOSE指令通知Docker容器在运行时监听指定的网络端口。

EXPOSE指令实际上并不发布端口。它作为构建镜像的人和运行容器的人之间的一种类型的文档,关于要发布的端口。要在运行容器时实际发布端口,请在docker run上使用-p标志来发布和映射一个或多个端口,或者使用-P标志来发布所有公开的端口并将它们映射到高位端口。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55776514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档