PeterPu
发布于 2025-08-09 / 3 阅读
0
0

Docker 网络详解

1. Docker 常见网络模式

Docker 提供了几种主要网络模式,不同模式下容器与容器、容器与宿主机之间的通信行为不一样。

网络模式

说明

场景

bridge(默认)

创建一个虚拟网桥 docker0,容器通过 veth 接口连到这个网桥上,分配内网 IP(172.x.x.x)。

大多数应用,容器需要 NAT 出公网。

host

容器直接使用宿主机的网络栈,没有独立的网络命名空间。

高性能、低延迟场景(如游戏服务器、代理)。

container:

多个容器共享另一个容器的网络命名空间。

多进程容器拆分为多个镜像时复用网络。

none

容器没有任何网络接口(除 lo 回环),完全隔离网络。

需要手动管理网络或安全隔离。

macvlan

给容器分配一个独立 MAC 地址,直接挂在宿主机物理网卡上,相当于局域网的独立主机。

容器需要直接出现在物理网络中(如直连交换机)。

overlay

跨主机的虚拟网络(依赖 Swarm 或其他分布式系统)。

多宿主机集群通信。


2. 不同模式下通信情况

2.1 Bridge 模式(默认)

  • 容器 → 容器(同一 bridge 网络)
    通过内部 IP 或容器名(DNS 解析)直接通信。

  • 容器 → 宿主机
    可以直接访问宿主机 IP(172.x.x.1 或物理网卡 IP)。

  • 宿主机 → 容器
    需映射端口(-p 8080:80),或宿主机直接访问容器 IP(仅限宿主机本地)。

  • 容器 → 外网
    通过 NAT 转发出公网。


2.2 Host 模式

  • 容器和宿主机是同一个网络环境
    容器直接使用宿主机 IP,监听端口和宿主机冲突。

  • 容器 ↔ 容器
    没有隔离,直接通过宿主机 IP+端口通信。

  • 性能优势:省去了 NAT 转发。


2.3 Container 模式

  • 多个容器共享一个网络栈。

  • 好处:可以让两个容器共享 127.0.0.1 进行本地通信。

  • 缺点:会抢占端口、难做隔离。


2.4 None 模式

  • 完全断网,需要手动配置网络。

  • 场景:安全隔离、只处理本地文件任务。


2.5 Macvlan 模式

  • 容器直接出现在局域网中,有独立 IP 和 MAC 地址。

  • 容器 ↔ 容器(同网段):像物理机一样直接通信。

  • 容器 ↔ 宿主机:需要特殊配置(宿主机默认不能直接访问)。


3. 图解

Bridge 模式

[外网]
   ↑
 [物理网卡] ← NAT → [docker0:172.17.0.1] ←→ [容器A:172.17.0.2]
                                             ←→ [容器B:172.17.0.3]


Host 模式

c


Macvlan 模式

[交换机/LAN] ←→ [宿主机物理网卡]
       ↑                   ↑
  容器A:192.168.1.101   容器B:192.168.1.102
less


通信对照表

模式

容器↔容器

容器↔宿主机

容器↔外网

bridge

同网络可直接 IP/DNS

可直接访问宿主机 IP

NAT 出公网

host

直接端口通信

同 IP

直通

container

共享 127.0.0.1

共享

共享

none

不可

不可

不可

macvlan

局域网直通

特殊配置

直通


评论