docker network create 是什么
docker network create 创建自定义网络,最常用的是 bridge 驱动。与默认的 docker0 相比,自定义网络内建 DNS:同一网络内的容器可以用容器名互相解析,不必依赖已经废弃的 --link。不同网络之间默认互不可达,天然形成隔离边界,这也是单机上做多套环境互不干扰的基础。
基本信息
| 语法 | docker network create [--driver 驱动] [--subnet 网段] 名称 |
|---|---|
| DNS | 自定义网络内建解析,容器名与别名映射到 IP |
| 隔离 | 不同网络内的容器默认不通,需 connect 才能打通 |
| 驱动 | bridge 用于单机,overlay 用于跨主机集群场景 |
| 查看 | docker network ls 与 docker network inspect 名称 |
典型使用场景
- 单机多服务:web 与 api 放同一网络,直接按服务名互访
- 环境隔离:测试与预发各建一个网络,容器名可重复且互不干扰
- 自定义网段:避开与办公网或 VPC 重叠的默认网段
- 临时打通:把运行中的容器 connect 到另一个网络做联合调试
- 多项目共存:每个项目一个网络,避免服务名冲突导致的连线错误
创建与使用
创建与使用
docker network create --driver bridge --subnet 172.20.0.0/16 appnet
# 指定网段可避开与 VPC 或办公网重叠导致的互通问题
docker run -d --name api --network appnet myapi:1.0
docker run -d --name web --network appnet -p 80:80 myweb:1.0
# web 容器内可直接用服务名访问:curl http://api:8080
docker network connect appnet older-container # 把已有容器接进网络
docker network inspect appnet # 查看网段与已连接容器网络驱动对照
| 驱动 | 范围 | 特点 | 适用 |
|---|---|---|---|
| bridge | 单机 | 默认驱动,内建 DNS | 单机多容器互联 |
| host | 单机 | 共用宿主网络栈,无隔离 | 极致性能、端口冲突需自负 |
| overlay | 跨主机 | 需集群支持 | Swarm 等多机场景 |
| none | 单机 | 只有回环,无网络 | 纯计算任务、强隔离 |
自定义网络的子网要与 VPC、办公网及对端网段错开:网段重叠会导致容器访问内网服务时路由冲突,表现为间歇性连不上,排查非常费时。
docker compose 会自动为项目创建专属网络,服务名解析开箱即用,比手工管理默认 bridge 网络省心得多;单机多容器场景优先用 compose。