端口映射
核心概念
# -p 宿主机端口:容器端口
docker run -d -p 8080:80 nginx
# 访问 http://localhost:8080 → 容器的 80 端口
# 映射多个端口
docker run -d -p 8080:80 -p 8443:443 nginx
# 随机端口
docker run -d -P nginx # 随机分配宿主机端口
# 只允许本地访问
docker run -d -p 127.0.0.1:8080:80 nginx
# 查看端口映射
docker port my-nginx
端口映射图
宿主机 容器
┌──────────┐ ┌──────────┐
│ :8080 │────────▶│ :80 │
│ :8443 │────────▶│ :443 │
└──────────┘ └──────────┘
常见问题
# 端口被占用
docker: Error response from daemon: Bind for 0.0.0.0:8080 failed: port is already allocated
# 解决:换端口或停止占用进程
lsof -i :8080
小结
| 语法 | 说明 |
|---|---|
-p 8080:80 | 映射端口 |
-P | 随机端口 |
-p 127.0.0.1:8080:80 | 仅本地 |
docker port | 查看映射 |