EXPOSE和ports在Docker中都用于容器的网络配置,但它们的用途和方式略有不同。
-
EXPOSE: 这是Dockerfile的指令,用于在创建镜像时声明容器打算使用的端口。它是对构建服务的人的一种文档性的声明,意味着运行的容器会监听某个端口。然而,只有当容器启动时使用了-P(大写)或-p(小写)参数,这些端口才会在主机上映射。此外,EXPOSE不会让容器的端口对外界可见。 -
ports: 这是docker-compose.yml文件中的一个字段,用于定义容器的端口映射。这实际上在主机上打开了端口,使得外部世界可以访问到容器的网络服务。它的格式通常为<Host Port>:<Container Port>。例如,如果你想在主机的8080端口上运行一个在80端口上运行的web服务器,你可以使用ports配置如下:- "8080:80"。
总的来说,EXPOSE主要用于在构建阶段声明容器需要使用的端口,而ports主要用于在运行阶段定义主机和容器之间的端口映射关系。
391

被折叠的 条评论
为什么被折叠?



