[Docker网络]模拟一台交换机的拓扑
本例主要对Docker网络进行实际运用。
背景介绍
一台虚拟机如何模拟成一台多端口交换机分别连接多台虚拟机?
bridge网桥技术
实验准备
docker
busybox镜像
$ docker pull busybox
bridge-utils
$ apt-get install bridge-utils
实验拓扑
两台主机:h1,h2,一台交换机:s1。
h1 <---> S1 <---> h2
实验步骤
<1> 创建docker网桥
- $ docker network create --driver bridge --subnet 10.0.0.0/24 --gateway 10.0.0.1 mybr
-
- 说明:
- --driver bridge:通过bridge驱动类创建bridge网络。
- --subnet 10.0.0.0/24:指定子网段。
- --gateway 10.0.0.1:指定网关。
- mybr:网桥名称。
<2> 启动h1和h2
- #终端1
- $ docker run -it --rm --network mybr --ip 10.0.0.2 busybox
- $ ip a
- #终端2
- $ docker run -it --rm --network mybr --ip 10.0.0.3 busybox
- $ ip a
<3> 启动s1
- #终端3
- $ docker run -it --rm --network host busybox
- $ ip a
测试
- #终端1
- $ ping 10.0.0.3
- #终端2
- $ ping 10.0.0.2
- #终端3
- $ ping 10.0.0.2
- $ ping 10.0.0.3
原理解释
- 在bridge网桥技术中,veth pair 是一种成对出现的特殊网络设备,可以把它们想象成由一根虚拟网线连接起来的一对网卡,比如h1中网卡的一头(eth0@if90)在容器中,另一头(veth0b95f4f@if89)挂在网桥mybr上,其效果就是将 eth0@if90也挂在了mybr上。
-
- 交换机S1 是利用容器中的host网络,因此S1和host宿主机的网络配置相同,即可视为通过veth0b95f4f@if89网卡和veth4850d3c@if91网卡分别与h1(eth0@if90)和h2(eth0@if92)相连。
-
- 实际拓扑如下:
扩展思考
- 1、如何模拟多台交换机?
- 2、如何模拟路由器?