一.概述                                                   

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. SlimerJS – Web开发人员可编写 JS 控制的浏览器

    SlimerJS 是一个提供给 Web 开发人员,可通过脚本编程控制的浏览器.它可以让你使用 Javascript 脚本操纵一个网页:打开一个网页,点击链接,修改的内容等,这对于做功能测试,页面自动机 ...

  2. CSS属性之float学习心得

    全文参考:http://www.linzenews.com/program/net/2331.html 我们来看看CSS重要属性--float. 以下内容分为如下小节: 1:float属性 2:flo ...

  3. 从零开始,做一个NodeJS博客(一):Heroku上的最简NodeJS服务器

    标签:NodeJS,Heroku 0 这里是这个伪系列的第一篇,因为我也不知道自己能不能做完,然后到底能做成什么样子.总之,尽力而为吧,加油. 1 Heroku App 的构成 Heroku 所谓的 ...

  4. SharePoint 2013 数据库中手动更新用户信息

    在SharePoint的使用过程中,尤其是Windows认证的情况下,而且没有配置用户配置文件服务,经常会出现如果更新AD中的用户信息(包括名字.显示名.邮件等),SharePoint这边站点并不会更 ...

  5. sharepoint custom web service

    创建自定义 ASP.NET Web 服务 http://msdn.microsoft.com/zh-cn/library/ms464040.aspx

  6. 关于asp.net impersonation的一些谣传

    以下皆是理论知识,未经证实. system.web下面的配置节 <identity impersonate="true" /> 或者<identity imper ...

  7. tomcat中的JSP引擎

    jsp文件解析成class文件过程需要利用tomcat的jasper组件. Jasper是tomcat中使用的JSP引擎,在Tomcat 6中使用的是Jasper 2,相对于原来的版本作了不少的改进, ...

  8. Service和Thread的关系及如何启用Service,如何停用Service

    Service和Thread的关系: 不少Android初学者都可能会有这样的疑惑,Service和Thread到底有什么关系呢?什么时候应该用Service,什么时候又应该用Thread?答案可能会 ...

  9. Android 调用系统照相机拍照和录像

    本文实现android系统照相机的调用来拍照 项目的布局相当简单,只有一个Button: <RelativeLayout xmlns:android="http://schemas.a ...

  10. Android ANR产生的原理和如何避免

    在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框.用户可以选择 ...