一.概述                                                   

1.环境:我这里是2台linux机器(host1和host2),发行版是kali2.0,内核版本是4.3。每台机器都安装Docker、OpenvSwitch(ovs)。

2.host1和host2分别启动1个ubuntu的docker容器。

3.网络结构:

2.1:host1的eth0:192.168.2.1,host1里面的docker容器ip地址是10.1.2.3

2.2:host2的eth0:192.168.2.2,host2里面的docker容器ip地址是10.1.2.4

2.3:host1和host2的eth0可以ping通。

4.目标是在2个不同宿主机的docker容器之间建立VxLAN隧道,让它们可以通信!

二.安装基本软件                                     

1.安装docker并获取ubuntu镜像

 sudo apt-get install docket.io
 sudo docker pull ubuntu

2.安装openvswitch和ovs的docker辅助脚本

 sudo apt-get install openvswitch-switc
 //OpenvSwitch 项目提供的支持 Docker 容器的辅助脚本 ovs-docker
 wget https://github.com/openvswitch/ovs/raw/master/utilities/ovs-docker
 chmod a+x ovs-docker

三.配置                                                   

1.在host1上面用ovs创建一个虚拟网桥,并给网桥一个ip

 sudo ovs-vsctl add-br vxbr
 sudo ifconfig vxbr 10.1.2.1/24

2.给网桥添加一个vxlan类型的端口,remote_ip就是host2的eth0地址!!!

 sudo ovs-vsctl add-port vxbr vxlan -- set interface vxlan type=vxlan options:remote_ip=192.168.2.2

3.启动一个没有以太网卡的docker容器

 sudo docker run --net=none --privileged=true -it ubuntu

并记下这个容器的ID,我这里是:b062406bc6b6。此时在这个容器里面ifconfig只能看到一个lo的设备。

4.给容器机指定一个eth0并绑定到宿主机的vxbr网桥

 sudo ./ovs-docker add-port vxbr eth0 b062406bc6b6

此时回到容器里面,ifconfig会看到出现了一个eht0。给它一个ip:

 

5.查看ovs配置

 sudo ovs-vsctl show

我们可以看到vxbr网桥上面有3个端口,一个是自己跟本机通信(这里是本机的eth0)的端口,一个是vxlan的端口,最后一个是docker容器机的eth0。

host2配置跟上面差不多,把host2的虚拟网桥vxbr改为10.1.2.2/24,vxlan的remote_ip改成host1的192.168.2.1,host2的docker容器机ip改为10.1.2.4/24

四.验证                                                   

此时的网络结构:

host1的eth0:192.168.2.,虚拟网桥vxbr:10.1.2.,docker容器机的eth0:10.1.2.。docker容器的eth0插在宿主机host1的虚拟网桥vxbr上面。

host2的eth0:192.168.2.,虚拟网桥vxbr:10.1.2.,docker容器机的eth0:10.1.2.。docker容器的eth0插在宿主机host2的虚拟网桥vxbr上面。

在host1的docker容器机里面ping host2的docker容器机,wireshark抓包:

可以看到容器机之间的通信被封装在一个UDP报文里面,这个UDP的通信是通过host1和host2的eth0转发。

Docker+OpenvSwitch搭建VxLAN实验环境的更多相关文章

  1. 一文教您如何通过 Docker 快速搭建各种测试环境(Mysql, Redis, Elasticsearch, MongoDB) | 建议收藏

    欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...

  2. PyCharm使用之利用Docker镜像搭建Python开发环境

      在我们平时使用PyCharm的过程中,一般都是连接本地的Python环境进行开发,但是如果是离线的环境呢?这样就不好搭建Python开发环境,因为第三方模块的依赖复杂,不好通过离线安装包的方式安装 ...

  3. 使用Docker快速搭建PHP开发环境

    最近有个同事找过来,希望我对在很早之前写的一个PHP网站上增加一些功能,当时开发使用xampp构建的本地开发环境,但是现在我的笔记本电脑已经更新,没有当时的开发环境.本着尽量不往电脑上装无用软件的原则 ...

  4. 《Exchange Server 2010 SP1/SP2管理实践》——第2章 搭建Exchange实验环境2.1 网络环境规划...

    本节书摘来自异步社区<Exchange Server 2010 SP1/SP2管理实践>一书中的第2章,第2.1节,作者: 王淑江 更多章节内容可以访问云栖社区"异步社区&quo ...

  5. Docker-教你如何通过 Docker 快速搭建各种测试环境

    今天给大家分享的主题是,如何通过 Docker 快速搭建各种测试环境,本文列举的,也是作者在工作中经常用到的,其中包括 MySQL.Redis.Elasticsearch.MongoDB 安装步骤,通 ...

  6. Docker容器搭建android编译环境

    Docker容器搭建android编译环境 目录 1 部署容器 1.1 手动部署 1.1.1 配置docker 1.1.2 启动容器 1.1.3 配置环境 1.2 Dockerfile 2 镜像管理 ...

  7. 搭建 OpenStack 实验环境 - 每天5分钟玩转 OpenStack(16)

    在学习 OpenStack 各服务之前,让我们先搭建起一个实验环境. 毋庸置疑,一个看得到摸得着而且允许我们随便折腾的 OpenStack 能够提高我们的学习效率. 因为是我们自己学习用的实验环境,C ...

  8. Docker下搭建Jenkins构建环境

    首先需要搭建好docker环境的linux系统,这个教程多如牛毛,在此不再赘述. 然后编写一个dockerfile来生成一个镜像,dockerfile其实就是一系列命令的集合,有点像windows的批 ...

  9. 利用 Docker Compose 搭建 SpringBoot 运行环境(超详细步骤和分析)

    0.前言 相信点进来看这篇文章的同学们已经对 Docker Dompose 有一定的了解了,下面,我们拿最简单的例子来介绍如何使用 Docker Compose 来管理项目. 本文例子: 一个应用服务 ...

随机推荐

  1. sql2000安装的一般问题

    SQLServer2000 在一段时间不使用后突然间不能够运行了.只能打开企业管理器,对数据库进行操作.VS2005不能够连接,试了很多种方式,无结果.于是重新安装 sqlServer2000? 仿真 ...

  2. Java经典实例:正则表达式,替换匹配的文本

    import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Created by Frank * 替换匹配的文本 */ ...

  3. OData – the best way to REST–实例讲解ASP.NET WebAPI OData (V4) Service & Client

    一.概念介绍 1.1,什么是OData? 还是看OData官网的简单说明: An open protocol to allow the creation and consumption of quer ...

  4. 为jQuery-easyui的tab组件添加右键菜单功能

    加入了右击TAB选项卡时显示关闭的上下文菜单 具体实现代码: 右键菜单 HTML: <div id="mm" class="easyui-menu" st ...

  5. 推荐25款实用的 HTML5 前端框架和开发工具【下篇】

    快速,安全,响应式,互动和美丽,这些优点吸引更多的 Web 开发人员使用 HTML5.HTML5 有许多新的特性功能,允许开发人员和设计师创建应用程序和网站,带给用户桌面应用程序的速度,性能和体验. ...

  6. CSS3颜色特征温故

    网页是色彩的表现原理:显示器是由一个个像素构成,利用电子束来表现色彩.像素把光的三原色:红色(R).绿色(G).蓝色(B)组合成的色彩按照科学原理表现出来.一个像素包含8位元色彩的信息量,又从0 ~ ...

  7. CSS选择符详解

    一.类型选择符 什么是类型选择符?指以网页中已有的标签类型作为名称的行径符.body是网页中的一个标签类型,div,p,span都是. 如下: body {} div {} p {} span {} ...

  8. AloneJs —— 简洁高效的JavaScript UI库

    以前做项目时用了一些第三方的JS UI库,项目比较low的时候用还行,一旦项目要求比较高,特别是交互比较复杂时,某些第三方UI库就显得无能为力,用起来也不顺手,改也不好改,所以我就自己基于jQuery ...

  9. ArcGIS JS 学习笔记2 实现仿百度的拖拽画圆

    一.前言 吐槽一下,百度在国内除了百度地图是良心产品外,其他的真的不敢恭维.在上一篇笔记里,我已经实现了自定义的地图测量模块.在百度地图里面(其他地图)都有一个周边搜索的功能,拖拽画一个圆,然后以圆半 ...

  10. spring-hellow word

          在大三的时候开了一门JAVAEE SSH框架,属于软件方向选修课程,虽然本人是搞硬件的,但是也选了这么课程,因为我在想有一天物联网也会走上大门户的,所以果断去蹭课了,时至今日,重新拾起来, ...