提问者:小点点

docker-compose端口与expose端口之间的区别是什么


docker-compose.yml中的端口公开选项之间有什么区别


共1个答案

匿名用户

根据docker-compose引用,

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

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

我的docker-compose.yml看起来是:

mysql:
  image: mysql:5.7
  ports:
    - "3306"

如果我执行docker-compose ps,它将看起来像:

  Name                     Command               State            Ports
-------------------------------------------------------------------------------------
  mysql_1       docker-entrypoint.sh mysqld      Up      0.0.0.0:32769->3306/tcp

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

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

mysql:
  image: mysql:5.7
  expose:
    - "3306"

如果我执行docker-compose ps,它将看起来像:

  Name                  Command             State    Ports
---------------------------------------------------------------
 mysql_1      docker-entrypoint.sh mysqld   Up      3306/tcp

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