docker-compose port expose的区别

5 min read

Ports

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

  • docker-compose.yml中提到的端口将在docker-compose启动的不同服务中共享。
  • 端口将暴露给主机一个随机端口或一个给定的端口。

docker-compose.yml看起来像。

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

docker-compose ps后它将看起来像。

名称 命令 状态 端口

 mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:32769->3306/tcp

Expose

暴露端口而不将其发布到主机上 - 它们将只被链接的服务访问。只有内部端口可以被指定。

端口不会暴露给主机,只暴露给其他服务。

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

docker-compose ps,它将看起来像。

名称 命令 状态 端口

 mysql_1 docker-entrypoint.sh mysqld Up 3306/tcp

在最近版本的Dockerfile中,EXPOSE不再有任何操作上的影响,它只是提供信息。