Docker容器的跨主机连接
Docker容器的跨主机连接
Docker容器的跨主机连接
使用网桥实现跨主机容器连接
网络拓扑
网络连接使用的是Bridge
操作
- 修改
/etc/network/interfaces文件,分配静态IP地址
1.auto br0
2.iface br0 inet static
3.address 10.211.55.3
4.netmask 255.255.255.0
5.gateway 10.211.55.1
6.bridge_ports eth0
- 修改
/etc/default/docker文件,限定分配IP地址段,防止冲突
1.-b 指定使用自定义网桥
2. -b=br0
3.--fixed-cidr 限制ip地址分配范围
4. IP地址划分:
5. Host1:10.211.55.64/26
6. 地址范围:10.211.55.65~10.211.55.126
7. Host2:192.168.59.128/26
8. 地址范围:10.211.55.129~10.211.55.190
优点:
- 配置简单,不依赖第三方软件
缺点: - 与主机在同网段,需要小心划分IP地址
- 需要有网段控制权,在生产环境中不易实现
- 不易管理
- 兼容性不佳
使用Open vSwitch实现跨主机容器连接
Open vSwitch是什么?
Open vSwitch是一个高质量的、多层虚拟交换机,使用开源Apache2.0许可协议,由Nicira Networks开发,主要实现代码为可移植的C代码。它的目的是让大规模网络自动化可以通过编程扩展,同时仍然支持标准的管理接口和协议(例如NetFlow,sFlow,SPAN,RSPAN,CLI,LACP,802.1ag)
原理:
什么是GRE隧道?
GRE:通用路由协议封装
隧道技术(Tunneling)是一种通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或负载)可以是不同协议的数据帧或包。隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送。新的帧头提供路由信息,以便通过互联网传递被封装的负载数据。(点对点的再封装技术)
网络连接使用双网卡,Host-Only & NAT
操作
- 建立ovs网桥
查看ovs版本
1.sudo ovs-vsctl show
建立一个名为obr0的网桥
1.sudo ovs-vsctl add-br obr0
- 添加gre连接,接口名为gre0
1.sudo ovs-vsctl add-port obr0 gre0
为接口设置类型和远程另一台主机的地址192.168.59.104
1.sudo ovs-vsctl set interface gre0 type=gre options:remote_ip=192.168.59.104
- 配置docker容器虚拟网桥
1.sudo ifconfig br0 192.168.1.1 netmask 255.255.255.0
- 为虚拟网桥添加ovs接口
1.sudo brctl addif br0 obr0
修改/etc/default/docker,用新建的网桥来代替默认的docker0
1.DOCKER_OPTS="-b=br0"
重启服务sudo service docker restart
- 添加不同Docker容器网段路由
1.sudo ip route add 192.168.2.0/24 via 192.168.59.104 dev eth0
使用weave实现跨主机容器连接
weave是什么?
语义:编织
建立一个虚拟的网络,用于将运行在不同主机的Docker容器连接起来
http://weave.works
https://github.com/weaveworks/weave#readme
网络连接使用双网卡,Host-Only & NAT
操作
- 安装weave
下载
1.sudo wget -O /usr/bin/weave https://raw.githubusercontent.com/zettio/weave/master/weave
更改weave文件夹的权限
1.sudo chmod a+x /usr/bin/weave
- 启动weave
1.weave launch
在启动weave时,实际上是在docker中运行一个weave的容器
- 连接不同主机
为了是两个docker主机能够正确的连接到一起,在运行weave的时候传入另一主机的IP
1.weave launch 192.168.59.103
- 通过weave启动容器
通过weave创建一个容器,返回容器的id
1.c2=$(weave run 192.168.1.2/24 -it ubuntu /bin/bash)
查看id
1.echo $c2
进入容器
1.docker attach $c2
或者直接
1.weave run 192.168.1.2/24 -it --name wc1 ubuntu /bin/bash
Docker容器的跨主机连接的更多相关文章
- Docker学习(15) Docker容器的跨主机连接
Docker容器的跨主机连接 Docker使用网桥跨主机容器连接 Docker使用Open cSwitch实现跨主机容器连接 Docker使用weave实现跨主机容器连接
- Docker 容器的跨主机连接
使用网桥实现跨主枳容器连接 不推荐 使用OpenvSwitch实现跨主机容器连接 OpenvSwitch: OpenvSwitch是一个高质量的.多层虚拟交换枳,使用开源Apache2.0许可协议,由 ...
- 利用虚拟网桥实现Docker容器的跨主机访问
最近在研究Docker,Docker的网络配置是比较令人头疼的部分,尤其是跨主机的容器间通信,很多解决方案都比较复杂,这里,我只用虚拟网桥来实现Docker的跨主机访问,分享出来,希望对Docker学 ...
- docker swarm模式跨主机连接
一.前言 当我们开发好微服务之后,考虑到灵活快速持续部署的需要,通常会考虑将其Docker镜像化并在Docker环境下运行.由于微服务个数通常会较多,把所有微服务部署在一台docker主机上是不现实的 ...
- docker容器间跨主机通信
http://jnzg905.iteye.com/blog/2269583 https://blog.csdn.net/pingpangbing0902/article/details/7823889 ...
- docker实现跨主机连接
实验环境: centos7系统 host1:192.168.42.128 host2:192.168.42.129 dokcer容器跨主机连接 1.使用网桥实现跨主机容器连接 2.使用Open vSw ...
- Docker的跨主机连接:
1使用网桥实现跨主机容器连接. 2使用open vswitch虚礼的交换机实现跨主机容器连接. 3使用weave开源项目工具实现跨主机连接. 使用网桥实现跨主机容器连接:在同一个docker的主机中d ...
- 从Docker容器内部,如何连接到本机的本地主机?
原文 从Docker容器内部,如何连接到本机的本地主机? 编辑:如果您使用的是Docker-for-mac或Docker-for-Windows 18.03+,只需使用主机连接到您的mysql服务即可 ...
- Docker容器的使用和连接
在上一篇文章<Docker从安装部署到Hello World>介绍了如何在CentOS7上安装Docker.这篇文章主要介绍一下Docker容器的使用和连接. vDocker 容器使用 1 ...
随机推荐
- 【斐波拉契+数论+同余】【ZOJ3707】Calculate Prime S
题目大意: S[n] 表示 集合{1,2,3,4,5.......n} 不存在连续元素的子集个数 Prime S 表示S[n]与之前的所有S[i]互质; 问 找到大于第K个PrimeS 能整除X 的第 ...
- Open Replicator
Open Replicator ( http://code.google.com/p/open-replicator/ ) 开源了.Open Replicator是一个用Java编写的MySQL bi ...
- ASP.NET MVC 学习之路-6
本文在于巩固基础 上文中使用的Code First创建数据库 本文将使用数据库生成模型 这里使用ADO.NET实体数据模型来生成模型 下面按照指导完成操作 下面看看如何使用这个框架 数据访问修改主要是 ...
- DevExpress GridControl一些属性使用方法总结
一.如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 二.如何新增一条记录 (1).gridView.AddN ...
- beforefieldinit释义(3)
1.看下面的例子: public static class MyClass<T> { public static readonly DateTime Time = GetNow(); pr ...
- 私有构造函数(c# .NET)
如果类成员有private修饰符,就不允许在类范围以外访问这个类成员.对类构造函数应用private修饰符时,则禁止外部类创建该类的实例.尽管看上去有些不好理解(既然不能实例化,那么这个类还有什么用处 ...
- IntPtr问题
public aaa(IntPtr myPtr,int left, int top, int width, short height) 这里myPtr应该是对应到一块内存,你需要查看aaa函数是如何把 ...
- 用python发送GET和POST请求
GET请求: python2.7: import urllib,urllib2 url='http://192.168.199.1:8000/mainsugar/loginGET/' textmod ...
- 离线使用nuget
先新建一个项目,将所有想保存下来或者要升级的package先安装或升级. 然后在项目中将packages文件夹全部拷贝出来,专门放到一个目录备用,以后的项目就可以根据此packages文件夹来离线使用 ...
- TensorFlow 深度学习笔记 逻辑回归 实践篇
Practical Aspects of Learning 转载请注明作者:梦里风林 Github工程地址:https://github.com/ahangchen/GDLnotes 欢迎star,有 ...