《Docker 网络基础:桥接、host 与 none 模式实操演示》
·
Docker 网络基础:桥接、host 与 none 模式实操演示
Docker 提供三种核心网络模式,直接影响容器间通信与网络隔离。以下通过实操演示说明各模式特性:
1. 桥接模式(bridge)
特性:
- 默认网络模式
- 容器通过虚拟网桥 $docker0$ 互联
- 每个容器分配独立 IP(如 $172.17.0.2$)
实操步骤:
# 创建并运行容器(默认桥接模式)
docker run -dit --name container1 alpine ash
docker run -dit --name container2 alpine ash
# 查看容器网络配置
docker inspect container1 | grep IPAddress
# 输出示例: "IPAddress": "172.17.0.2"
# 测试容器间通信
docker exec container1 ping 172.17.0.3 # 应收到响应
结果分析:
容器通过 $docker0$ 网桥直接通信,但需使用 IP 地址(非容器名)。
2. host 模式
特性:
- 容器共享主机网络栈
- 无独立 IP,直接使用主机端口
- 网络性能最佳
实操步骤:
# 以 host 模式运行 Nginx 容器
docker run -d --network host --name nginx-host nginx
# 验证端口占用
netstat -tuln | grep 80 # 显示主机 80 端口被占用
# 访问服务(无需端口映射)
curl http://localhost # 返回 Nginx 欢迎页
结果分析:
容器网络配置与主机完全一致,$localhost$ 直接访问容器服务。
3. none 模式
特性:
- 禁用所有网络接口
- 适用于完全隔离场景
实操步骤:
# 创建无网络容器
docker run -dit --network none --name no-net alpine ash
# 进入容器验证网络
docker exec no-net ip addr show
# 输出:仅显示 lo(本地环回)接口
# 测试外部连接(失败)
docker exec no-net ping 8.8.8.8 # 报错:Network unreachable
结果分析:
容器完全脱离网络,仅保留 $lo$ 接口。
模式对比总结
| 模式 | 隔离性 | 性能 | 典型场景 |
|---|---|---|---|
bridge | 中 | 中 | 多容器互通 |
host | 低 | 高 | 高性能服务(如负载均衡) |
none | 高 | - | 安全审计/离线任务 |
关键提示:
- 使用 $--network$ 参数指定模式(如 $--network host$)
- 桥接模式需自定义网络以支持容器名解析:
docker network create my_net && docker run --network my_net ...
更多推荐
所有评论(0)