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 ...  
    

更多推荐