docker-compose ports vs揭露有什么区别?
在docker-compose.yml文件中,有ports
和expose
选项。 他们有什么不同?
根据docker撰写的参考资料 ,
端口被定义为:
公开港口 。 既可以指定两个端口(HOST:CONTAINER),也可以指定容器端口(将select一个随机的主机端口)。
- docker-compose.yml中提到的端口将由docker-compose启动的不同服务共享。
- 端口将暴露给主机到随机端口或给定的端口。
我docker-compose.yml
看起来像
mysql: image: mysql:5.7 ports: - "3306"
如果我做docker-compose up
,它会看起来像:
$ docker-compose ps 10:27:28 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 up
,它会看起来像:
Name Command State Ports --------------------------------------------------------------- mysql_1 docker-entrypoint.sh mysqld Up 3306/tcp