Docker Network 命令:容器网络管理的完整指南
一、Docker 网络概述
Docker 网络是容器化架构中的关键组件,它决定了容器之间以及容器与外部世界的通信方式。Docker 提供了多种网络驱动来满足不同场景的需求。
1.1 Docker 网络架构
- 容器网络命名空间:隔离容器网络栈
- 网络驱动:bridge, host, overlay, none
- 虚拟网桥:用于 Bridge 模式
- 主机网络:Host 模式直接复用宿主机
- 跨主机网络:Overlay 模式支持 Swarm
1.2 默认网络类型
| 网络类型 | 描述 | 适用场景 |
|---|---|---|
| bridge | 默认桥接网络 | 单主机容器通信 |
| host | 直接使用主机网络 | 高性能需求 |
| none | 无网络连接 | 安全隔离 |
| overlay | 跨主机网络 | 集群环境 |
二、核心命令详解
2.1 网络列表查看(docker network ls)
命令格式:
docker network ls [OPTIONS]
输出示例:
NETWORK ID NAME DRIVER SCOPE
a1b2c3d4e5f6 bridge bridge local
f1e2d3c4b5a6 host host local
字段说明:
NetworkID: 网络唯一标识符Name: 网络名称Driver: 驱动类型Scope: 作用域 (local/swarm/global)
2.2 网络创建(docker network create)
命令格式:
docker network create [OPTIONS] NETWORK_NAME
高级创建示例:
docker network create \
--driver=bridge \
--subnet=192.168.100.0/24 \
--gateway=192.168.100.1 \
--ip-range=192.168.100.128/25 \
my_custom_net
网络拓扑说明:
- 网关:192.168.100.1
- 可用 IP 范围:192.168.100.129 - 192.168.100.254
- 容器分配:动态或静态指定
2.3 网络详情查看(docker network inspect)
命令格式:
docker network inspect [OPTIONS] NETWORK_NAME
输出解析:
{
"Name": "my_net",
"IPAM": {
"Config": [{"Subnet": "172.20.0.0/16", "Gateway": "172.20.0.1"}]
},
"Containers": {
"c1": {"IPv4Address": "172.20.0.2"}
}
}
三、网络连接管理
3.1 容器连接网络(docker network connect)
命令格式:
docker network connect [OPTIONS] NETWORK_NAME CONTAINER_ID
操作流程:
- 用户发起连接请求
- Docker 守护进程处理
- 为容器分配 IP 地址
- 更新路由表
- 确认连接操作成功
3.2 容器断开网络(docker network disconnect)
强制断开示例:
docker network disconnect -f my_net container1
状态转换:
Connected -> Disconnected
四、高级网络配置
4.1 多主机 Overlay 网络
Swarm 模式创建:
docker network create \
--driver=overlay \
--subnet=10.10.0.0/16 \
my_overlay_net
跨主机通信:
通过 Overlay 网络,不同物理主机上的容器可以像在同一局域网内一样通信。
4.2 网络别名与负载均衡
创建带别名的网络:
docker network create --alias=webapp my_net
DNS 解析流程:
- 容器查询服务名
- Docker DNS 网络响应
- 返回容器 IP 列表
- 实现内部负载均衡
五、实战应用场景
5.1 微服务网络隔离
# 创建后端专用网络
docker network create backend
# 连接服务
docker network connect backend mysql
docker network connect backend redis
安全隔离策略:
前端网络 <-> API 网关 <-> 后端网络 <-> 数据库/缓存
5.2 CI/CD 网络配置
# 测试环境网络
docker network create \
--driver=bridge \
--internal \
ci-network
# 运行测试容器
docker run --network=ci-network test-image
CI 流程时序:
- 创建测试网络
- 运行测试容器
- 执行测试任务
- 清理网络资源
六、常见问题解决方案
6.1 网络冲突排查
诊断命令:
# 检查 IP 冲突
docker network inspect --format='{{range .IPAM.Config}}{{.Subnet}}{{end}}' my_net
# 查看路由表
ip route show
排查步骤:
- 是否网络不通?
- 检查容器状态
- 验证网络连接
- 是否为路由问题?
- 检查路由表
- 检查防火墙规则
6.2 网络性能优化
优化建议:
- 使用
macvlan驱动获得原生性能 - 禁用 ICC 提高安全性
- 调整 MTU 大小
禁用 ICC 示例:
docker network create --opt com.docker.network.bridge.enable_icc=false isolated_net
调整 MTU 示例:
docker network create --opt com.docker.network.driver.mtu=9000 my_net
七、最佳实践指南
7.1 生产环境网络清单
| 网络名称 | 类型 | 子网 | 用途 |
|---|---|---|---|
| frontend | bridge | 10.1.0.0/24 | 前端服务 |
| backend | bridge | 10.2.0.0/24 | 后端服务 |
| database | overlay | 10.3.0.0/24 | 跨主机数据库 |
连接策略:
# 应用默认网络
docker run --network=frontend app1
# 附加连接后端
docker network connect backend app1
7.2 安全加固建议
启用网络加密(Swarm 模式):
docker network create --opt encrypted overlay_net
定期清理未使用网络:
docker network prune
为敏感服务创建 internal 网络:
docker network create --internal secure_net
八、总结与延伸
Docker 网络系统提供了强大的容器网络管理能力,主要功能包括:
- 容器互联:通过自定义网络实现服务发现
- 网络隔离:保障不同环境的安全边界
- 跨主机通信:支持分布式应用部署
进阶方向:
- 集成服务网格(如 Istio)
- 实现网络策略(NetworkPolicy)
- 开发自定义网络插件
- 结合 eBPF 实现高级网络监控
通过掌握这些网络管理技巧,可以构建从开发到生产的高性能、安全的容器网络架构。


