1、容器跨主机多子网方案

  网络设计如下:

    主机1:10.110.52.38

      容器1: 192.168.0.1  vlan1

      容器2: 192.168.0.2  vlan2

    主机2:10.110.52.66

      容器3: 192.168.0.3  vlan1

      容器4: 192.168.0.4  vlan2

  本示例采用OVS(Open vSwitch)网桥替代Docker默认的Linux网桥,搭建两个跨主机的vlan。实现跨主机的属于同个vlan互通,不同vlan隔离。

2、搭建步骤

  Host1的网桥配置:

    #创建一个网桥:ovs-vsctl add-br ovs-br0

    #创建一个到10.110.52.66的vxlan tunnel:ovs-vsctl add-port ovs-br0 vxlan-10.110.52.66 -- set interface vxlan-10.110.52.66 type=vxlan option:remote_ip="10.110.52.66"

    #运行docker:docker run -tid --net=none --name=container1 ubuntu:latest /bin/bash

    #获取container1的pid:pid=$(docker inspect -f '{{.State.pid}}' container1)

    #创建可以使用ip netns命令操纵network namespace的项

    #mkdir -p /var/run/netns

    #ln -s /proc/$pid/ns/net /var/run/netns/$pid

    #为container1创建一对虚拟网卡接口

    #ip link add name vethC1Host mtu 1500 type veth peer namevethC1Container mtu 1500

    #将veth pair的一端加入到ovs网桥中,并设置为vlan1,vlan通过tag值划分

    #ovs-vsctl add-port ovs-br0 vethC1Host tag=1

    #启用:ip link set vethC1Host up

    #将veth pair的另一端放入容器所在network namespace

    #ip link set vethC1Container netns $pid

    #进入$pid所在的netns中,配置刚才放入其中的虚拟网卡,改名为eth0,配置IP并启用

    #ip netns exec $pid ip link set dev vethC1Container name eth0

    #ip netns exec $pid ip addr add 192.168.0.1/24 dev eth0

    #ip netns exec $pid ip link set eth0 up

    #container2的网络配置与container1类似

    #运行docker:docker run -tid --net=none --name=container2 ubuntu:latest /bin/bash

    #获取container1的pid:pid=$(docker inspect -f '{{.State.pid}}' container2)

    #mkdir -p /var/run/netns

    #ln -s /proc/$pid/ns/net /var/run/netns/$pid

    #ip link add name vethC2Host mtu 1500 type veth peer namevethC2Container mtu 1500

    #ovs-vsctl add-port ovs-br0 vethC1Host tag=2

    #启用:ip link set vethC2Host up

    #ip link set vethC2Container netns $pid

    #ip netns exec $pid ip link set dev vethC2Container name eth0

    #ip netns exec $pid ip addr add 192.168.0.2/24 dev eth0

    #ip netns exec $pid ip link set eth0 up

  Host2网桥配置:  

    #创建一个网桥:ovs-vsctl add-br ovs-br0

    #创建一个到10.110.52.38的vxlan tunnel:ovs-vsctl add-port ovs-br0 vxlan-10.110.52.38 -- set interface vxlan-10.110.52.38 type=vxlan option:remote_ip="10.110.52.38"

    #运行docker:docker run -tid --net=none --name=container3 ubuntu:latest /bin/bash

    #获取container3的pid:pid=$(docker inspect -f '{{.State.pid}}' container3)

    #mkdir -p /var/run/netns

    #ln -s /proc/$pid/ns/net /var/run/netns/$pid

    #ip link add name vethC3Host mtu 1500 type veth peer namevethC3Container mtu 1500

    #将veth pair的一端加入到ovs网桥中,并设置为vlan3,vlan通过tag值划分

    #ovs-vsctl add-port ovs-br0 vethC3Host tag=1

    #启用:ip link set vethC3Host up

    #将veth pair的另一端放入容器所在network namespace

    #ip link set vethC1Container netns $pid

    #进入$pid所在的netns中,配置刚才放入其中的虚拟网卡,改名为eth0,配置IP并启用

    #ip netns exec $pid ip link set dev vethC3Container name eth0

    #ip netns exec $pid ip addr add 192.168.0.3/24 dev eth0

    #ip netns exec $pid ip link set eth0 up

    #container4的网络配置与container3类似

    #运行docker:docker run -tid --net=none --name=container4 ubuntu:latest /bin/bash

    #获取container4的pid:pid=$(docker inspect -f '{{.State.pid}}' container4)

    #mkdir -p /var/run/netns

    #ln -s /proc/$pid/ns/net /var/run/netns/$pid

    #ip link add name vethC4Host mtu 1500 type veth peer namevethC4Container mtu 1500

    #ovs-vsctl add-port ovs-br0 vethC4Host tag=2

    #启用:ip link set vethC4Host up

    #ip link set vethC4Container netns $pid

    #ip netns exec $pid ip link set dev vethC4Container name eth0

    #ip netns exec $pid ip addr add 192.168.0.4/24 dev eth0

    #ip netns exec $pid ip link set eth0 up

  配置完成以后可以使用ovs-vsctl show命令查看Host1和Host2网桥及网卡信息。

  此时相同vlan下的容器可跨网段访问。

  

Docker(五):Docker高级网络配置的更多相关文章

  1. Docker Network Configuration 高级网络配置

    Network Configuration TL;DR When Docker starts, it creates a virtual interface named docker0 on the ...

  2. Docker 使用指南 (三)—— 网络配置

    版权声明:本文由田飞雨原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/95 来源:腾云阁 https://www.qclou ...

  3. DOCKER学习_005:Flannel网络配置

    一 简介 Flannel是一种基于overlay网络的跨主机容器网络解决方案,也就是将TCP数据包封装在另一种网络包里面进行路由转发和通信, Flannel是CoreOS开发,专门用于docker多机 ...

  4. Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第五集之网络配置】

    还有对第五集的补充:https://www.cnblogs.com/lirenhe/p/10405069.html 1,如果不为这个linux系统或者这台虚拟机配置IP,就不能实现通信.这样的之后安装 ...

  5. (转) docker跨主机 macvlan 网络配置

    原文链接 https://github.com/alfredhuang211/study-docker-doc/blob/master/docker%E8%B7%A8%E4%B8%BB%E6%9C%B ...

  6. Linux系统的高级网络配置(bond、team、网桥)

    1.bond接口 Red Hat Enterprise Linux 允许管理员使用 bonding 内核模块和称为通道绑定接口的特殊网络接口将多个网络接口绑定 到一个通道.根据选择的绑定模式 , 通道 ...

  7. 5、Docker网络配置(单机)

    一.概述 以下内容参考:https://docs.docker.com/network/#network-drivers Docker容器和服务如此强大的原因之一是您可以将它们连接在一起,或者将它们连 ...

  8. 03 . Docker数据资源管理与网络

    Docker数据卷 在容器中管理数据主要有两种方式 # 数据卷(Data volumes) # 数据卷容器(Data volume containers) # 数据卷是一个可供一个或多个容器使用的特殊 ...

  9. Docker的4种网络模式

    我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: · host模式,使用--net=host指定. · container ...

随机推荐

  1. Handlebars 和 angularjs 之间的区别

    handlebarsjs算不上框架,只是一种js模板引擎,是模板库,模板库的主要作用是:你想要生成某一大片有一定规律的界面,比如商品详情,不同商品之间差的只是名称,价格,图片,介绍这些,但是结构一样的 ...

  2. Python测试开发之函数

    对于初学者而言,感觉函数还是不是很好理解,尤其是当写一个脚本,或者是写一个算法,认为可能for循环就已经可以解决的问题为什么还要用函数来实现呢? 今天就来说一下函数的优点,其实函数的最大优点就是可重用 ...

  3. Spring Cloud Eureka Server集群Demo级搭建

    将上篇随笔Spring Cloud Eureka服务Demo级搭建进行改造,改造成一个在本机的伪集群 1.修改hosts文件(windows10 hosts文件位置:C:\Windows\System ...

  4. 浅谈php的优缺点

    一.优点 1. 跨平台,性能优越,跟Linux/Unix结合别跟Windows结合性能强45%,并且和很多免费的平台结合非常省钱,比如LAMP(Linux /Apache/Mysql/PHP)或者FA ...

  5. js屏蔽广告

    最近遇到有些广告的问题,首先是在手机端,可能是用户访问了一些小网站的,(你懂得),然后在访问我的网站时,会带小广告过来,通常是wifi被dns劫持的情况下导入到广告脚本, 1.处理这些要知道广告的根源 ...

  6. 用Python删除本地目录下某一时间点之前创建的所有文件

    因为工作原因,需要定期清理某个文件夹下面创建时间超过1年的所有文件,所以今天集中学习了一下Python对于本地文件及文件夹的操作.网上 这篇文章 简明扼要地整理出最常见的os方法,抄袭如下: os.l ...

  7. 逐步搭建Lamp环境之Linux的运行模式

    首先先来看几个概念,分别是:单用户.单任务.多用户.多任务 单用户: 是指操作系统一般只能由一个人同时进行登录 单任务: 是指操作系统只能同时处理一个任务 多用户: 是指操作系统可以允许由多个用户同时 ...

  8. webStorm和Sublime使用列编辑命令

    webStorm可以像Sublime一样使用列编辑,只是区别在于webStorm只可以编辑连续列表. 按住alt键鼠标选择一列,然后输入文字就会编辑多行,这个功能很赞,比较实用(按住ALT键选中之后, ...

  9. openstack-glance API 镜像管理的部分实现和样例

    感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限.错误之处在所难免.欢迎指正. 假设转载,请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...

  10. Codeforces Round #271 (Div. 2) F题 Ant colony(线段树)

    题目地址:http://codeforces.com/contest/474/problem/F 由题意可知,最后能够留下来的一定是区间最小gcd. 那就转化成了该区间内与区间最小gcd数相等的个数. ...