Docker(五):Docker高级网络配置
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高级网络配置的更多相关文章
- Docker Network Configuration 高级网络配置
Network Configuration TL;DR When Docker starts, it creates a virtual interface named docker0 on the ...
- Docker 使用指南 (三)—— 网络配置
版权声明:本文由田飞雨原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/95 来源:腾云阁 https://www.qclou ...
- DOCKER学习_005:Flannel网络配置
一 简介 Flannel是一种基于overlay网络的跨主机容器网络解决方案,也就是将TCP数据包封装在另一种网络包里面进行路由转发和通信, Flannel是CoreOS开发,专门用于docker多机 ...
- Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第五集之网络配置】
还有对第五集的补充:https://www.cnblogs.com/lirenhe/p/10405069.html 1,如果不为这个linux系统或者这台虚拟机配置IP,就不能实现通信.这样的之后安装 ...
- (转) docker跨主机 macvlan 网络配置
原文链接 https://github.com/alfredhuang211/study-docker-doc/blob/master/docker%E8%B7%A8%E4%B8%BB%E6%9C%B ...
- Linux系统的高级网络配置(bond、team、网桥)
1.bond接口 Red Hat Enterprise Linux 允许管理员使用 bonding 内核模块和称为通道绑定接口的特殊网络接口将多个网络接口绑定 到一个通道.根据选择的绑定模式 , 通道 ...
- 5、Docker网络配置(单机)
一.概述 以下内容参考:https://docs.docker.com/network/#network-drivers Docker容器和服务如此强大的原因之一是您可以将它们连接在一起,或者将它们连 ...
- 03 . Docker数据资源管理与网络
Docker数据卷 在容器中管理数据主要有两种方式 # 数据卷(Data volumes) # 数据卷容器(Data volume containers) # 数据卷是一个可供一个或多个容器使用的特殊 ...
- Docker的4种网络模式
我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: · host模式,使用--net=host指定. · container ...
随机推荐
- [Machine Learning]学习笔记-Logistic Regression
[Machine Learning]学习笔记-Logistic Regression 模型-二分类任务 Logistic regression,亦称logtic regression,翻译为" ...
- CNCC2017中的深度学习与跨媒体智能
CNCC2017中的深度学习与跨媒体智能 转载请注明作者:梦里茶 目录 机器学习与跨媒体智能 传统方法与深度学习 图像分割 小数据集下的深度学习 语音前沿技术 生成模型 基于贝叶斯的视觉信息编解码 珠 ...
- 【原创】python基于大数据现实双色球预测
前提准备:利用sql筛选出每个球出现概率最高的前5个数 原理:先爬出所有的历史数据,然后模拟摇奖机出球的机制并大量模拟计算,直到出现列表中的某一个数后即停 注意事项:由于计算过程数据量很大,需要加入内 ...
- 16进制到byte转换
我们经常会看到这样的语法 (byte) 0xAD 0xAD实际是个16进制,转换成二进制为:10101101,转换成10进制是:173,它是个正数 10101101只是int的简写,int由4个byt ...
- JAVA IO分析一:File类、字节流、字符流、字节字符转换流
因为工作事宜,又有一段时间没有写博客了,趁着今天不是很忙开始IO之路:IO往往是我们忽略但是却又非常重要的部分,在这个讲究人机交互体验的年代,IO问题渐渐成了核心问题. 一.File类 在讲解File ...
- Spring JDBC(二)SimpleJdbcInsert
上一篇写了关于jdbcTemplate的一些基本使用,这一篇来聊聊SimpleJdbcInsert SimpleJdbcInsert是springjdbc提供的一个简化插入操作的类,下面来看一下常用的 ...
- 一个js的动画,以前以为只有flash可以实现
11年刚干这行的时候,看到这种什么百叶窗的动画,以为都是flash实现的,最近突然灵光一闪,想到了用js实现(虽然我不是做前端的,本人做.net).代码虽然实现了,但是比较乱,先上个图: 代码主要就是 ...
- java日期详解
[TOC] 一.简介 java中的日期处理一直是个问题,没有很好的方式去处理,所以才有第三方框架的地位比如joda. 文章主要对java日期处理的详解,用1.8可以不用joda. 1. 相关概念 首先 ...
- object-fit?
知道有这个属性存在,是一个很偶然的机会.有一天,设计部的一个小伙伴给了我一个网址,说很有个性,让我看一下,当发现一个很有意思的效果时,作为一个前端小兵的我当然是第一时间开始审查元素,然后看到了这个从没 ...
- 闲来无事研究一下酷狗缓存文件kgtemp的加密方式
此贴为本人原创,转载请注明出处 序 前几天更新了被打入冷宫很久的酷狗,等进入之后就感觉菊花一紧----试 听 居 然 都 要 开 通 音 乐 包(高品和无损)才行了,WTF! 这意味着以前缓存的都听不 ...