Docker 默认网络:docker0 网桥与容器网络连接机制

Docker 默认网络:docker0 网桥与容器网络连接机制

一、docker0 简介

docker0 是 Docker 安装后自动生成的默认虚拟桥接网卡,属于 Docker 网络的基础设施。
其默认 IP 地址为 172.17.0.1,作为容器网段的网关,用于连接宿主机与容器。

✅ 本质上,docker0 是一个 Linux Bridge(桥接设备),起到“虚拟交换机”的作用,使所有默认网络容器可以互通。

docker0示意图


二、容器创建与网络结构

当执行以下命令创建两个 Tomcat 容器时:

docker run -d --name tomcat01 tomcat
docker run -d --name tomcat02 tomcat

Docker 会自动建立如下网络结构:

容器桥接结构


三、网络组成分析

1. 容器内部网络接口

  • 每个容器(如 tomcat01tomcat02)内部会生成 eth0 接口。
  • Docker 为其分配默认网段 IP:
    • tomcat01172.17.0.2
    • tomcat02172.17.0.3
  • 均属于 172.17.0.0/16 网段。

2. 虚拟接口对(Veth Pair)

  • 宿主机上同时生成对应的虚拟接口(如 veth9e...veth38...)。
  • 这些接口与容器内的 eth0 成对存在。
  • 宿主机侧接口被挂接到 docker0 网桥上,实现容器与主机之间的网络互通。

🧩 类比理解:
每对 veth 接口就像一根“虚拟网线”,一头插在容器里(eth0),另一头插在 docker0 这个虚拟交换机上。


3. 网络通信逻辑

  • 容器间通信
    tomcat01172.17.0.2) ↔ tomcat02172.17.0.3
    通过 docker0 直接通信,无需额外配置。

  • 容器访问外部网络
    容器通过 docker0 网关(172.17.0.1),再经宿主机物理网卡(如 eth0)访问外网。

通信路径


四、运行机制总结

  • docker0 是 Docker 安装时创建的默认虚拟网桥
  • 容器启动时,Docker 会为其创建一对 虚拟接口(Veth Pair)
    • 一端在容器内部(eth0,IP 为 172.17.x.x);
    • 另一端在宿主机上(vethXXX),并挂载到 docker0 上。
  • 当容器被删除时,其对应的虚拟接口会一并销毁,仅 docker0 作为核心网桥保留。

veth原理图


五、核心特性与结论

功能 说明
容器间通信 所有默认网络容器可通过 docker0 互通
外网访问 通过 docker0 网关访问宿主机与外网
隔离机制 容器通过虚拟接口与外界通信,实现轻量级隔离
自动管理 容器删除时,相关虚拟接口自动清理,docker0 持续存在

✅ 总结一句话

docker0 就像一个默认的虚拟交换机(或路由器),
所有未指定网络的容器都会接入其中,由它分配 IP 并负责通信路由。