使用Docker Compose的ports配置时是否还需配置expose暴露端口?
Docker Compose 中
expose 与 ports 的相关问题解答 二者核心区别
expose是声明性的说明配置,没有实际的端口开启或暴露效果:
它的作用仅仅是标注当前镜像默认监听的端口,仅作为给镜像使用者、同Docker网桥下其他服务的参考说明,不会把端口暴露到宿主机或公网,也不会强制开放端口给内部服务。ports是实际生效的端口映射配置:
只要配置了ports: 宿主机端口:容器端口,就会自动把容器的对应端口同时开放给同Docker网络的其他容器、宿主机,甚至公网,完全不依赖expose配置。
你的问题解答
- 使用
ports配置时,完全不需要额外再暴露对应端口。 - 你给出的
docker-compose.yml示例中的expose: - 2022配置项可以直接删除,不会对服务的运行、端口访问产生任何功能性影响。
如果保留expose唯一的作用是作为项目维护的文档说明,让其他协作开发者一眼就能看到容器内部服务监听的端口是2022,仅此而已。
内容的提问来源于stack exchange,提问作者Julien Le Coupanec
相关产品推荐
相关产品推荐

