最常用且最可控的端口映射方式是使用-p参数,将宿主机端口与容器内服务端口显式绑定,通过iptables规则实现流量转发,支持tcp/udp、多端口及ip限定等灵活配置。

直接用 -p 参数就能让宿主机端口访问容器服务,这是最常用也最可控的方式。核心就是把“宿主机端口”和“容器内服务端口”连通,外部请求打到宿主机指定端口,Docker 自动转发进容器。
基础映射:指定宿主机端口 → 容器端口
语法是 -p 主机端口:容器端口,比如容器里 Web 服务监听 80,你想用宿主机的 8080 访问:
docker run -d -p 8080:80 --name myweb nginx- 启动后,
curl http://localhost:8080就能拿到 Nginx 欢迎页 - 注意:宿主机 8080 端口不能被其他进程占用,否则容器启动失败
限制访问范围:绑定到特定 IP
默认映射会监听所有网卡(0.0.0.0),如果只想让内网或本机访问,可以加 IP 前缀:
MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。
- 仅本机可访问:
-p 127.0.0.1:3306:3306(适合数据库调试) - 仅局域网某 IP 可访问:
-p 192.168.1.100:8080:80 - 这样既减少暴露面,又避免被外网扫描到
支持 UDP 或多端口同时映射
多数服务用 TCP,但 DNS、监控采集等可能走 UDP;一个容器也可能提供多个服务端口:
- UDP 映射写法:
-p 53:53/udp(DNS 服务常用) - 多个端口分开写多个
-p:-p 8080:3000 -p 8443:3001 -p 9000:9000/udp - Docker Compose 中写法类似:
ports: ["8080:3000", "8443:3001"]
快速验证和排查
容器跑起来后,别急着访问,先确认映射是否生效:
- 查映射关系:
docker port,输出类似3000/tcp -> 0.0.0.0:8080 - 看 iptables 是否插入规则:
sudo iptables -t nat -L DOCKER | grep :8080 - 宿主机上 telnet 测试:
telnet localhost 8080,通了说明链路正常 - 不通?检查容器内服务是否真在监听对应端口(如
netstat -tuln | grep 3000进容器查)










