docker - docker-compose.yml 上的 "ports"是否与 Dockerfile 上的 EXPOSE 效果相同?

标签 docker

是否在 docker-compose.yml 上声明:

ports:
 - "3306:3306"

在 Dockerfile 上:

EXPOSE 3306

效果一样吗?

最佳答案

否:EXPOSE 只打开容器中的端口,使其可以被其他容器访问。

“3306:3306” 将在主机上发布端口,使主机可以访问相同的端口。

Dockerfile EXPOSE :

The EXPOSE instruction informs Docker that the container listens on the specified network ports at runtime.
EXPOSE does not make the ports of the container accessible to the host. To do that, you must use the -p flag to publish a range of ports.

这就是 docker-compose.yml ports部分可以。它将容器端口映射到主机。

关于docker - docker-compose.yml 上的 "ports"是否与 Dockerfile 上的 EXPOSE 效果相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35548843/

相关文章:

docker - RHEL 上的 docker-credential-secretservice

mongodb - k8s中的mongo设置不使用持久卷

docker - 结合使用 VOLUME + docker run -v

docker - psql : could not translate host name "somePostgres" to address: Name or service not known

docker - 我可以回滚到以前版本的 Docker Desktop 吗?

php - 使用 PHP、MySQL、nginx 同时运行多个 Dockerize 项目

mongodb - Bluemix IBM Container 与 Mongodb 连接失败

docker - 从本地 Docker For Mac 中部署的服务访问本地 Kafka(包括 Kubernetes 扩展)

docker - 在不影响正在运行的容器的情况下升级docker

python - 使用图像名称 docker-py 运行 docker 容器