在 Ubuntu 上使用 Docker 配置网络,常见方式可以分为 Docker 默认网络、自定义桥接网络、主机网络、容器互联、以及跨主机网络。下面按使用场景给你一个清晰、可操作的说明。
一、Docker 默认网络(不需要配置)
安装 Docker 后,默认有 3 种网络:
docker network ls
常见网络:
bridge:默认桥接(容器隔离)host:直接使用宿主机网络none:无网络
查看某容器使用的网络:
docker inspect 容器名 | grep NetworkMode
二、使用默认 bridge 网络(最常用)
1. 启动容器(默认 bridge)
docker run -it --name web1 ubuntu bash
特点:
- 容器有独立 IP
- 容器之间可通过 IP 通信
- 不能通过容器名访问
查看容器 IP:
docker inspect web1 | grep IPAddress
三、自定义 bridge 网络(推荐 ✅)
1. 创建自定义网络
docker network create mynet
2. 启动容器并加入网络
docker run -d --name web1 --network mynet nginx
docker run -it --name client --network mynet ubuntu bash
3. 容器名互访 ✅
ping web1
✅ 自定义 bridge 支持:
- 容器名 DNS 解析
- 更安全
- 推荐生产使用
四、使用 host 网络(性能最好)
docker run -d --network host nginx
特点:
- 无端口映射
- 直接使用 Ubuntu 网络
- 适合高性能场景
⚠️ 注意:
- 端口冲突风险
- 容器内服务直接暴露在外网
五、端口映射(bridge 常用)
docker run -d -p 8080:80 nginx
访问:
http://Ubuntu_IP:8080
查看映射:
docker ps
六、容器互联(旧方式,不推荐)
docker run -d --name db mysql
docker run -d --name web --link db nginx
❌ --link 已废弃,建议用自定义网络。
七、固定容器 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 与 Ubuntu 防火墙(重要)
Ubuntu 常用 ufw:
sudo ufw allow 8080
如 Docker 端口不通,可检查:
sudo ufw status
iptables -L
九、跨主机网络(简单了解)
- Docker Swarm
- Overlay 网络
- 第三方:Calico / Flannel / Weave
示例(Swarm):
docker swarm init
docker network create -d overlay mynet
十、常用排查命令
docker network ls
docker network inspect mynet
docker exec -it 容器名 ping 其他容器
ip addr
总结建议 ✅
| 场景 | 推荐方式 |
|---|---|
| 单机多容器 | 自定义 bridge |
| 高性能 | host |
| Web 服务 | bridge + 端口映射 |
| 生产环境 | 自定义网络 |
如果你有 具体使用场景(比如:Docker Compose、内网访问、外网暴露、集群),我可以给你更针对性的配置示例。