Bridge网络不自动暴露端口,必须用-p参数显式映射,如docker run -d -p 8080:80 nginx;支持绑定IP、UDP协议、端口范围及docker-compose配置,且需确保容器服务监听0.0.0.0、宿主机防火墙放行、端口未被占用。

Bridge 网络本身不自动暴露端口,必须显式配置端口映射,才能让宿主机(以及外部网络)访问容器内的服务。
使用 -p 参数运行容器时映射端口
这是最常用的方式,适用于 docker run 命令:
-
基础写法:
docker run -d -p 8080:80 nginx—— 把宿主机的 8080 端口映射到容器的 80 端口 -
绑定指定 IP:
-p 127.0.0.1:3306:3306—— 只允许本机访问,提升安全性 -
映射 UDP:
-p 53:53/udp—— 显式加/udp,否则默认为 TCP -
批量映射端口范围:
-p 8000-8010:8000-8010—— 适合多端口服务
在 docker-compose.yml 中配置 ports 字段
适用于 Compose 编排场景,更清晰、可复用:
MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。
- 基本格式:
ports: ["8080:80"]或ports: ["127.0.0.1:8080:80"] - 支持多行写法,便于阅读:
ports:
- "8080:80"
- "443:443/tcp"
- "53:53/udp" - 注意:
ports是暴露给宿主机的,同一 bridge 网络内其他容器仍可通过服务名+内部端口直接通信,无需映射
自定义 bridge 网络不影响端口映射逻辑
无论是默认 bridge 还是手动创建的自定义网络(如 app-network),端口映射机制完全一致:
- 创建网络:
docker network create app-network - 运行容器并加入网络:
docker run -d --network app-network -p 8080:80 nginx - 网络本身只解决容器间互通(通过服务名或 IP),对外暴露仍依赖 -p 或 ports
验证和调试要点
映射后不是一定就能访问,需确认几件事:
- 宿主机防火墙是否放行目标端口(如
ufw allow 8080或firewalld规则) - 容器内服务是否真正监听在映射端口上(如 Nginx 默认监听
0.0.0.0:80,不是127.0.0.1:80) - 用
docker port <容器名>查看实际绑定情况,例如输出80/tcp -> 0.0.0.0:8080表示成功 - 宿主机执行
curl http://localhost:8080测试;若失败,再查容器日志:docker logs <容器名>

















