全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-21 5 分钟 ✍️ juanwangdev

端口映射配置

容器默认使用独立网络,需端口映射才能从外部访问,下面介绍配置方法。

基本映射

-p 参数

Bash
# 映射容器 80 端口到宿主机随机端口
docker run -d -P nginx

# 查看映射端口
docker port my-nginx

# 输出
80/tcp -> 0.0.0.0:49153

指定宿主机端口

Bash
# 映射容器 80 端口到宿主机 8080 端口
docker run -d -p 8080:80 nginx

# 多个端口
docker run -d -p 8080:80 -p 8443:443 nginx

映射语法

Bash
-p [宿主机IP:]宿主机端口:容器端口[/协议]

完整示例

Bash
# 指定协议(tcp/udp)
docker run -d -p 8080:80/tcp nginx

# 绑定特定 IP
docker run -d -p 127.0.0.1:8080:80 nginx

# 绑定所有 IP(默认)
docker run -d -p 0.0.0.0:8080:80 nginx

# UDP 端口
docker run -d -p 53:53/udp dns-server

# 端口范围
docker run -d -p 8000-8010:80-90 nginx

常见场景

Web 服务

Bash
# Nginx
docker run -d -p 80:80 -p 443:443 nginx

# 避免端口冲突
docker run -d -p 8080:80 nginx  # 宿主机 80 被占用时

数据库

Bash
# MySQL
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0

# PostgreSQL
docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=123456 postgres:15

# 仅本地访问
docker run -d -p 127.0.0.1:3306:3306 mysql:8.0

Redis

Bash
# Redis(绑定本地 IP,防止外部访问)
docker run -d -p 127.0.0.1:6379:6379 redis:7

数据库和缓存服务建议绑定 127.0.0.1,避免暴露到公网。

查看端口映射

Bash
# 查看容器端口映射
docker port my-nginx

# 查看容器网络配置
docker inspect my-nginx | grep -A 10 "Ports"

# 输出示例
"Ports": {
    "80/tcp": [
        {
            "HostIp": "0.0.0.0",
            "HostPort": "8080"
        }
    ]
}

处理端口冲突

text
# 查看端口占用
sudo lsof -i :8080
sudo netstat -tlnp | grep 8080

# 停止占用进程或使用不同端口
docker run -d -p 8081:80 nginx

要点总结

  • -p 宿主机端口:容器端口 映射端口,-P 随机映射
  • 可绑定特定 IP:-p 127.0.0.1:8080:80,增强安全性
  • 支持 TCP/UDP 协议,端口范围和多个端口映射
  • 数据库服务建议绑定 127.0.0.1 防止外部访问
  • 端口冲突时更换宿主机端口或停止占用进程

📝 发现内容有误?点击此处直接编辑

← 上一篇 命名数据卷管理
下一篇 → 绑定挂载数据卷
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库