首页 > 解决方案 > 尝试运行容器时,docker 是否需要额外的端口?

问题描述

在我的工作场所,docker 在防火墙后面运行,规则只排除了用于服务网页的端口。

容器启动,但网站未针对同一端口打开。

如果我使用 python -m SimpleHTTPServer 从运行容器的机器托管网站,它可以工作。

docker container run --restart=always -p 8081: 8082 -it vue-js-app: latest

标签: dockerdocker-container

解决方案


Docker 文档

发布或公开端口(-p,--expose)

$ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash

这会将容器的 8080 端口绑定到主机 127.0.0.1 上的 TCP 端口 80。您还可以指定 udp 和 sctp 端口。Docker 用户指南详细解释了如何在 Docker 中操作端口。

$ docker run --expose 80 ubuntu bash

这会暴露容器的 80 端口,而不会将端口发布到主机系统的接口。

并且,来自Docker 用户指南

您还看到了如何使用 -p 标志将容器的端口绑定到特定端口。这里主机的 80 端口映射到容器的 5000 端口:

$ docker run -d -p 80:5000 training/webapp python app.py

因此,作为如何公开您可以使用的端口的示例:

docker container run --restart always -p 8081:8082 -it vue-js-app:latest

推荐阅读