1. Bridge 模式(默认模式)

  • 特点:
    • Docker 自动创建虚拟网桥 docker0。
    • 每个容器拥有独立的网络命名空间,分配私有 IP(如 172.17.0.x)。
    • docker0 作为容器的默认网关。
  • 端口访问:
    • 容器端口默认不对外暴露。
    • 通过 -p 宿主机端口:容器端口 显式映射(如 -p 8080:80),外部才能通过 宿主机IP:8080 访问容器服务。
  • 适用场景:大多数单机应用部署。

默认行为,安全隔离,需手动暴露端口。


2. Host 模式

  • 特点:
    • 容器共享宿主机的网络命名空间。
    • 容器没有独立 IP,直接使用宿主机的 IP 和端口。
    • 无需 -p 映射,容器内服务监听的端口 = 宿主机端口。
  • 限制:
    • 端口冲突风险高(多个容器不能监听同一端口)。
    • 仅支持 Linux,不支持 macOS/Windows。
  • 适用场景:高性能网络需求(如监控代理、低延迟服务)。

性能高,但失去网络隔离。


3. None 模式

  • 特点:
    • 容器仅有 loopback 接口(lo),无任何外部网络连接。
    • 不分配 IP,不连接网桥,不配置路由。
  • 用途:
    • 完全隔离的离线任务(如数据处理、批处理作业)。
    • 需要手动配置网络的特殊场景。
  • 注意:容器内部无法访问外网,外部也无法访问容器。

完全断网,极致隔离。


4. Container 模式(共享网络命名空间)

  • 特点:
    • 新容器复用另一个已存在容器的网络命名空间。
    • 共享 IP、端口、网络接口,但 PID、文件系统、用户等其他命名空间仍相互隔离。
    • 使用方式:--network container:<目标容器名或ID>
  • 典型用途:
    • Sidecar 模式(如主应用 + 日志收集器共享网络)。
    • 调试工具容器与目标容器网络一致(如 netshoot 诊断容器)。
  • 注意:目标容器必须处于运行状态。

网络共享,其他资源隔离,适合协同工作。


对比总结

模式网络隔离IP 地址端口映射典型用途
Bridge独立私有 IP需 -p默认部署
Host共享宿主机 IP无需 -p高性能服务
None无网络无(仅 lo)不可用离线任务
Container共享某容器同目标容器同目标容器Sidecar / 调试辅助

更多推荐