温馨提示×

Ubuntu Docker如何映射端口

小樊
37
2026-08-24 08:43:53
栏目: 智能运维

Ubuntu 上使用 Docker 映射端口,核心是通过 -p / --publish 参数,把 宿主机的端口映射到容器内的端口


一、基本端口映射方式

1️⃣ 映射单个端口

docker run -d -p 8080:80 nginx

含义:

  • 8080:宿主机(Ubuntu)端口
  • 80:容器内部端口

访问方式:

http://localhost:8080

2️⃣ 映射多个端口

docker run -d \
  -p 8080:80 \
  -p 8443:443 \
  nginx

3️⃣ 指定宿主机 IP(只监听指定网卡)

docker run -d -p 127.0.0.1:8080:80 nginx

✅ 只能本机访问,外部无法访问


4️⃣ 随机端口映射

docker run -d -P nginx

Docker 会自动映射容器暴露的端口到宿主机随机端口:

docker ps

二、查看端口映射情况

docker ps

或:

docker port 容器名或ID

示例输出:

80/tcp -> 0.0.0.0:8080

三、Dockerfile 中的端口声明(不自动映射)

EXPOSE 80

⚠️ EXPOSE 只是说明,不会自动映射 必须配合:

docker run -p 80:80

四、docker-compose 中映射端口(推荐)

version: "3"
services:
  web:
    image: nginx
    ports:
      - "8080:80"

启动:

docker-compose up -d

五、常见问题排查

✅ 1. 端口被占用

sudo netstat -tulnp | grep 8080

或:

sudo lsof -i :8080

✅ 2. 防火墙未放行(Ubuntu)

sudo ufw allow 8080
sudo ufw reload

✅ 3. 容器内服务未监听端口

进入容器检查:

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、云服务器),可以告诉我,我可以给你 完整示例

0