Docker容器的跨主机连接

Docker容器的跨主机连接

使用网桥实现跨主机容器连接

网络拓扑



网络连接使用的是Bridge

操作

  1. 修改/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
  1. 修改/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

操作

  1. 建立ovs网桥

    查看ovs版本
1.sudo ovs-vsctl show

建立一个名为obr0的网桥

1.sudo ovs-vsctl add-br obr0
  1. 添加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
  1. 配置docker容器虚拟网桥
1.sudo ifconfig br0 192.168.1.1 netmask 255.255.255.0
  1. 为虚拟网桥添加ovs接口
1.sudo brctl addif br0 obr0

修改/etc/default/docker,用新建的网桥来代替默认的docker0

1.DOCKER_OPTS="-b=br0"

重启服务sudo service docker restart

  1. 添加不同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

操作

  1. 安装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
  1. 启动weave
1.weave launch

在启动weave时,实际上是在docker中运行一个weave的容器

  1. 连接不同主机

    为了是两个docker主机能够正确的连接到一起,在运行weave的时候传入另一主机的IP
1.weave launch 192.168.59.103
  1. 通过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容器的跨主机连接的更多相关文章

  1. Docker学习(15) Docker容器的跨主机连接

    Docker容器的跨主机连接 Docker使用网桥跨主机容器连接 Docker使用Open cSwitch实现跨主机容器连接 Docker使用weave实现跨主机容器连接

  2. Docker 容器的跨主机连接

    使用网桥实现跨主枳容器连接 不推荐 使用OpenvSwitch实现跨主机容器连接 OpenvSwitch: OpenvSwitch是一个高质量的.多层虚拟交换枳,使用开源Apache2.0许可协议,由 ...

  3. 利用虚拟网桥实现Docker容器的跨主机访问

    最近在研究Docker,Docker的网络配置是比较令人头疼的部分,尤其是跨主机的容器间通信,很多解决方案都比较复杂,这里,我只用虚拟网桥来实现Docker的跨主机访问,分享出来,希望对Docker学 ...

  4. docker swarm模式跨主机连接

    一.前言 当我们开发好微服务之后,考虑到灵活快速持续部署的需要,通常会考虑将其Docker镜像化并在Docker环境下运行.由于微服务个数通常会较多,把所有微服务部署在一台docker主机上是不现实的 ...

  5. docker容器间跨主机通信

    http://jnzg905.iteye.com/blog/2269583 https://blog.csdn.net/pingpangbing0902/article/details/7823889 ...

  6. docker实现跨主机连接

    实验环境: centos7系统 host1:192.168.42.128 host2:192.168.42.129 dokcer容器跨主机连接 1.使用网桥实现跨主机容器连接 2.使用Open vSw ...

  7. Docker的跨主机连接:

    1使用网桥实现跨主机容器连接. 2使用open vswitch虚礼的交换机实现跨主机容器连接. 3使用weave开源项目工具实现跨主机连接. 使用网桥实现跨主机容器连接:在同一个docker的主机中d ...

  8. 从Docker容器内部,如何连接到本机的本地主机?

    原文 从Docker容器内部,如何连接到本机的本地主机? 编辑:如果您使用的是Docker-for-mac或Docker-for-Windows 18.03+,只需使用主机连接到您的mysql服务即可 ...

  9. Docker容器的使用和连接

    在上一篇文章<Docker从安装部署到Hello World>介绍了如何在CentOS7上安装Docker.这篇文章主要介绍一下Docker容器的使用和连接. vDocker 容器使用 1 ...

随机推荐

  1. VMware虚拟机与主机联通及配置上网

    vmware版本:10.0.0 build-1295980,安装redhat enterprise linux 5.8 一.物理机与虚拟机联通,但不联网 1.虚拟网络VMnet1设置: 此时,物理主机 ...

  2. 【迪杰斯特拉双关键字最短路】【HDU3790】【最短路径问题】

    题目大意: 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的. 只需要再更新的时候判断一下就好 voi ...

  3. .net程序员转战android第一篇---环境部署

    对于.net开发人员去写java,可谓说是见山是山, 因为太多的相同; 最近段时间因工作因素,将项目中部分功能需要移植到android平台上,经过半个月的煎熬,终于搞完了. 文章中将直观记录我做项目中 ...

  4. transactionscope报“此操作对该事务的状态无效”问题

    编写的保存方法里面有个transactionscope代码一直报“此操作对该事务的状态无效”,弄了半天,原来是超时问题(transactionscope默认超时时间是1分钟) 经过修改,设置了超时时间 ...

  5. CRC循环校验码

    为了防止数据在传输的时候丢失或被篡改,有了各种校验码. 每种CRC校验都有自己的多项式.每个多项式都有唯一对应的二进制. CRC16就如果名字一样,校验码就是16位的 如果CRC32就是32位的. 原 ...

  6. 5.7 cm server-agent 会出现无法启动

    异常信息如下: 离线安装cloudera-scm-agent5.7的Unable to create the pidfile问题 在离线安装Cloudera Manager启动agent出现了如下异常 ...

  7. Find Minimum in Rotated Sorted Array,Find Minimum in Rotated Sorted ArrayII

    一:Find Minimum in Rotated Sorted Array Suppose a sorted array is rotated at some pivot unknown to yo ...

  8. VS2008 自定义向导的default.js设置(DLL文件)

    function OnFinish(selProj, selObj) { try { var strProjectPath = wizard.FindSymbol('PROJECT_PATH'); v ...

  9. jquery的选项卡事件

    <?php /* * * @Authors peng--jun * @Email 1098325951@qq.com * @Date 2015-11-28 09:26:54 * @Link ht ...

  10. mysql5.7慢查询开启配置

    1.问题 当然又被度娘(我冤枉)坑了噻,网友说配置文件写下面三行: log-slow-queries=D:\Program Files\mysql-5.7.11-winx64\data\low.log ...