网络栈包括:

    • 网卡
    • 回环设备
    • 路由表
    • iptables 规则

    在 Linux 中, 能起到虚拟交换机作用的网络设备是网桥 (bridge):

    • 二层, 根据 MAC 地址学习将数据包转发到网桥的不同端口上
    • Docker 默认创建 docker0 网桥

    如何把容器连接到 docker0 上?

    • Veth Pair 虚拟设备

    image.png

    查看 docker0 上有哪些虚拟网卡:

    1. $ brctl show

    查看容器中的路由表:

    image.png

    第二条规则:

    image.png

    • eth0 网卡需要使用 ARP 协议, 来找到 172.17.0.3 对应的 MAC

    image.png

    image.png

    image.png

    注意 veth, eth0 的位置.

    image.png

    image.png

    以上方式中, 不同主机上的容器无法通信.

    通过软件方式, 创建一个整个集群公用的网桥:

    • 覆盖网络 overlay network

    image.png

    image.png