[Docker网络]模拟一台交换机的拓扑

本例主要对Docker网络进行实际运用。

背景介绍

一台虚拟机如何模拟成一台多端口交换机分别连接多台虚拟机?

bridge网桥技术

实验准备

  • docker

    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、如何模拟路由器?

[Docker网络]模拟一台交换机的拓扑的更多相关文章

  1. Docker网络解决方案 - Calico部署记录

    简单来说,实现docker跨主机容器间通信,常用的第三方网络方案是Flannel,Weave,Calico:Flannel会为每个host分配一个subnet,容器从这个subnet中分配ip,这些i ...

  2. Docker网络解决方案 - Weave部署记录

    前面说到了Flannel的部署,今天这里说下Docker跨主机容器间网络通信的另一个工具Weave的使用.当容器分布在多个不同的主机上时,这些容器之间的相互通信变得复杂起来.容器在不同主机之间都使用的 ...

  3. Docker 网络原理

    引言 学习docker网络,可以带着下面两个问题来探讨 容器之间可以相互访问的原理 容器暴露端口后,通过宿主机访问到容器内应用,并且对于访问端而言不用感知容器存在的原理 Docker 本身的技术依赖L ...

  4. 【转】Docker网络详解及pipework源码解读与实践

    好文必转 原文地址: http://www.infoq.com/cn/articles/docker-network-and-pipework-open-source-explanation-prac ...

  5. Docker 网络之理解 bridge 驱动

    笔者在前文<Docker 网络之进阶篇>中介绍了 CNM(Container Network Model),并演示了 bridge 驱动下的 CNM 使用方式.为了深入理解 CNM 及最常 ...

  6. Docker网络和容器的通信

    Docker的本地网络实现其实就是利用了Linux上的网络命名空间和虚拟网络设备(特别是veth pair). 基本原理 直观上看,要实现网络通信,机器需要至少一个网络接口(物理接口或虚拟接口)与外界 ...

  7. Docker网络及命令

    Docker常用命令 docker version #查看版本 docker search centos #搜索可用docker镜像 docker images 查看当前docker所有镜像 dock ...

  8. docker网络之macvlan

    macvlan接口类型简单说类似于子接口,但相比子接口来说,macvlan接口拥有自己独立的mac地址,因此使用macvlan接口可以允许更多的二层操作.macvlan有四种模式:VEPA,bridg ...

  9. Docker网络 Weave

    当容器分布在多个不同的主机上时,这些容器之间的相互通信变得复杂起来.容器在不同主机之间都使用的是自己的私有IP地址,不同主机的容器之间进行通讯需要将主机的端口映射到容器的端口上,而且IP地址需要使用主 ...

随机推荐

  1. Spring Cloud官方文档中文版-Spring Cloud Config(上)

    官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#spring-cloud-feign 文中例子我做了一些测试在:http ...

  2. OOAD-设计模式(四)结构型模式之适配器、装饰器、代理模式

    前言 前面我们学习了创建型设计模式,其中有5中,个人感觉比较重要的是工厂方法模式.单例模式.原型模式.接下来我将分享的是结构型模式! 一.适配器模式 1.1.适配器模式概述 适配器模式(Adapter ...

  3. 使用spark-streaming实时读取Kafka数据统计结果存入MySQL

    在这篇文章里,我们模拟了一个场景,实时分析订单数据,统计实时收益. 场景模拟 我试图覆盖工程上最为常用的一个场景: 1)首先,向Kafka里实时的写入订单数据,JSON格式,包含订单ID-订单类型-订 ...

  4. python去除读取文件中多余的空行

    今天在写登录程序练习的时候,黑名单文件中多了几行空行.导致运行的时候报错:IndexError: list index out of range 代码 brackData = open(brackDa ...

  5. vb.net 代码建立控件,并显示在窗体上

    Dim lb As New Label        lb.Text = "hello"        lb.Top = 200        lb.Left = 100      ...

  6. HDU 4135 Co-prime(容斥+数论)

    Co-prime Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  7. centos命令自动补全增强

    CentOS默认没有像Ubuntu系统一样命令参数补全功能,例如yum install无法补全.通过安装bash-completion安装命令参数补全增强. CentOS6 默认情况下,CentOS6 ...

  8. php图片上传服务器

    原理是把图片上传到服务器的某个目录,然后在把他的名字存入数据库,或者不需要数据库这部分也行.读取的时候直接读取名字. HTML提交表格 <form method="post" ...

  9. iOS内置图片瘦身思路整理

    一.前言 前段时间注意到我们APP的包大小超过100MB了,所以随口跟老板说了下能否采用字体文件(.ttf)替代PNG图片,老板对应用瘦身很感兴趣因此让我做下技术调研.这篇文章主要是将我们的各个技术方 ...

  10. C# 插入排序(数据结构与算法)

    1                                                                   }