docker compose端口与expose端口之间有什么区别

docker compose.yml

根据docker compose的参考资料

端口定义为:

暴露端口。指定两个端口(主机:容器),或仅指定容器端口(将选择一个随机主机端口)

  • docker-compose.yml中提到的端口将在docker-compose启动的不同服务之间共享
  • 端口将向主机公开到随机端口或给定端口

我的docker compose.yml看起来像:

mysql:
图片:mysql:5.7
端口:
-“;3306“;

如果我使用docker compose ps,它将看起来像:

命名命令状态端口
-------------------------------------------------------------------------------------
mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:32769->3306/tcp

暴露定义为:

公开端口而不将其发布到主机-它们只能由链接的服务访问。只能指定内部端口

端口不向主机公开,只向其他服务公开

mysql:
图片:mysql:5.7
揭露:
-“;3306“;

如果我使用docker compose ps,它将看起来像:

命名命令状态端口
---------------------------------------------------------------
mysql_1 docker-entrypoint.sh mysqld Up 3306/tcp

编辑

在Dockerfile的最新版本中,EXPOSE不再有任何操作影响,它只是提供信息。(另见)

发表评论