Docker网络之bridge0 详解

时间:2024-04-03 22:01:38

1.创建一个 container

  docker run -d --name test1 busybox /bin/sh -c "while true; do sleep 3600; done"

2.查看 docker 的网络情况  查看docker 上有哪些网络

  docker network ls

NETWORK ID          NAME                DRIVER              SCOPE

385c87f45f0e        bridge              bridge              local

78e50edb53c5        host                host                local

d5d0532ce8d7        none                null                local

3.查看 test1 的网络是连接到那种 driver 上的

  docker network inspect [ bridge 的 network_id]

  输出中包含了 containers , 其中包含了 Name 为 test1

4. 查看 container 的 network 

  ip a

  其中   docker0 是本机器 在docker 内的Namespace

  docker0 下的 test1 的Namespace 为虚拟的 是 以 veth 开头的

  Docker网络之bridge0 详解

 

5. 查看 test1 的网络 

  docker exec test1 ip a  可以看出[email protected][email protected] 是一对

  并且 [email protected] 是连到了 docker0 上

Docker网络之bridge0 详解

 

6. 验证 [email protected] 是连到了 docker0 上

  安装验证工具 bridge-utils

    sudo yum install bridge-utils

  使用 brctl show

    Docker网络之bridge0 详解

    interfaces 的 数值 刚好与 container test1 的对外接口 对应上

    说明 container test1 的对外接口 是通过 docker0 桥接出去的

7. 桥接网络图

  Docker网络之bridge0 详解

8. 容器是如何访问外网的 

  是通过 NAT 技术 查询 ip tables 然后访问的