温馨提示×

Ubuntu Docker如何设网络

小樊
46
2026-09-25 15:08:55
栏目: 智能运维

在 Ubuntu 上使用 Docker 时,“设网络”通常分几种场景。下面按常见需求系统讲一下,从最基础到进阶。


一、Docker 默认网络(先了解)

Docker 安装后默认有 3 种网络:

docker network ls
  • bridge:默认网络(容器之间可通信)
  • host:直接使用宿主机网络
  • none:无网络

二、最常用的:自定义 bridge 网络(推荐)

1️⃣ 创建自定义网络

docker network create mynet

2️⃣ 启动容器并加入网络

docker run -d --name web --network mynet nginx
docker run -it --name client --network mynet ubuntu bash

✅ 好处:

  • 容器之间可用容器名互通
  • 比默认 bridge 更安全、可控

三、端口映射(容器 ↔ 外部)

映射单个端口

docker run -d -p 8080:80 nginx

映射多个端口

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

访问:

http://<Ubuntu IP>:8080

四、使用宿主机网络(host 模式)

⚠️ 不适合多容器隔离场景

docker run -d --network host nginx

特点:

  • 容器直接用 Ubuntu 的 IP
  • 不需要 -p 映射

五、容器之间通信示例

docker network create appnet

docker run -d --name db --network appnet mysql
docker run -d --name web --network appnet -p 80:80 myweb

在 web 容器中可直接:

ping db

六、固定容器 IP(进阶)

docker network create \
  --subnet=172.20.0.0/16 \
  mynet

docker run -d --name web \
  --network mynet \
  --ip=172.20.0.10 nginx

七、Docker Compose 设网络(最常用)

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

  db:
    image: mysql
    networks:
      - mynet

networks:
  mynet:
docker compose up -d

八、常见问题排查

看容器网络

docker inspect <容器名>

测试连通性

docker exec -it <容器> ping <另一容器>

防火墙(Ubuntu)

sudo ufw status

九、你更想了解哪种?

可以告诉我你是:

  • ✅ 单机 Docker
  • ✅ Docker Compose
  • ✅ 多台 Ubuntu 互通
  • ✅ 对外暴露服务
  • ✅ K8s 前过渡

我可以按你的实际场景给具体命令方案。

0 踩