在 Ubuntu 上使用 Docker 映射端口,核心是通过 -p / --publish 参数,把 宿主机的端口映射到容器内的端口。
docker run -d -p 8080:80 nginx
含义:
8080:宿主机(Ubuntu)端口80:容器内部端口访问方式:
http://localhost:8080
docker run -d \
-p 8080:80 \
-p 8443:443 \
nginx
docker run -d -p 127.0.0.1:8080:80 nginx
✅ 只能本机访问,外部无法访问
docker run -d -P nginx
Docker 会自动映射容器暴露的端口到宿主机随机端口:
docker ps
docker ps
或:
docker port 容器名或ID
示例输出:
80/tcp -> 0.0.0.0:8080
EXPOSE 80
⚠️ EXPOSE 只是说明,不会自动映射
必须配合:
docker run -p 80:80
version: "3"
services:
web:
image: nginx
ports:
- "8080:80"
启动:
docker-compose up -d
sudo netstat -tulnp | grep 8080
或:
sudo lsof -i :8080
sudo ufw allow 8080
sudo ufw reload
进入容器检查:
docker exec -it 容器名 bash
netstat -tulnp
| 需求 | 命令 |
|---|---|
| 映射端口 | -p 宿主机端口:容器端口 |
| 随机端口 | -P |
| 指定 IP | -p 127.0.0.1:8080:80 |
| 查看映射 | docker port 容器名 |
| compose | ports: |
如果你有 具体场景(如:Spring Boot、MySQL、Nginx、Ubuntu 22.04、云服务器),可以告诉我,我可以给你 完整示例。