Docker:宿主机端口与容器端口怎么对应

区分容器内监听、EXPOSE 与端口发布,用限定回环地址的示例解释访问范围和排查顺序。

以 Docker Engine 的 bridge 网络为例;host 网络、编排平台和不同网关模式需另查对应文档。命令会创建一个示例容器,先确认 8080 未被需要保留的服务使用。

1. 读懂发布参数

127.0.0.1 是宿主机绑定地址,8080 是宿主机端口,80 是容器目标端口。此示例只希望从本机访问,浏览器打开 http://127.0.0.1:8080/。镜像标签可能更新,生产部署应采用自己的固定版本策略。

docker run --rm --name portcyou-demo -p 127.0.0.1:8080:80 nginx:stable-alpine

2. 分别检查发布与应用

在另一终端检查映射、容器状态和日志。EXPOSE 是镜像元数据,并不等于已用 -p 发布;-p 也不会替应用创建监听。应用只绑定容器内回环地址时,发布入口可能无法到达它。

docker port portcyou-demo
docker ps --filter name=portcyou-demo
docker logs --tail 30 portcyou-demo

3. 验证访问边界并正常停止示例

省略宿主机地址的发布通常会扩大访问范围。Docker 官方还记录了旧于 28.0.0 的版本中回环发布可能被同二层网络访问的情况,应保持版本更新并验证网络规则。测试完成后停止示例容器;--rm 会在退出后移除它,不应在其中保存重要数据。

docker stop portcyou-demo

来源与核验

资料核对日期:

相关端口