Docker之Weave怎么实现跨主机容器互联

这篇文章主要介绍“Docker之Weave怎么实现跨主机容器互联”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Docker之Weave怎么实现跨主机容器互联”文章能帮助大家解决问题。

创新互联公司IDC提供业务:电信机房托管,成都服务器租用,电信机房托管,重庆服务器租用等四川省内主机托管与主机租用业务;数据中心含:双线机房,BGP机房,电信机房,移动机房,联通机房。

简介

weave是由zett.io公司开发的,它能够创建一个虚拟网络,用于连接部署在多台主机上的docker容器,这样容器就像被接入了同一个网络交换机,那些使用网络的应用程序不必去配置端口映射和链接等信息。外部设备能够访问weave网络上的应用程序容器所提供的服务,同时已有的内部系统也能够暴露到应用程序容器上。weave能够穿透防火墙并运行在部分连接的网络上,另外,weave的通信支持加密,所以用户可以从一个不受信任的网络连接到主机。

weave其他特性

  1. 应用隔离:不同子网容器之间默认隔离的,即便它们位于同一台物理机上也相互不通;不同物理机之间的容器默认也是隔离的

  2. 物理机之间容器互通:weave connect $other_host

  3. 动态添加网络:对于不是通过weave启动的容器,可以通过weave attach 10.0.1.1/24 $id来添加网络(detach删除网络)

  4. 安全性:可以通过weave launch -password weave设置一个密码用于weave peers之间加密通信

  5. 与宿主机网络通信:weave expose 10.0.1.102/24,这个ip会配在weave网桥上

  6. 查看weave路由状态:weave ps

  7. 通过nat实现外网访问docker容器

Docker之Weave怎么实现跨主机容器互联

Docker之Weave怎么实现跨主机容器互联

安装与启动

直接从github下载二进制文件安装。

# sudo wget -o /usr/local/bin/weave https://raw.githubusercontent.com/zettio/weave/master/weave
# sudo chmod a+x /usr/local/bin/weave

启动weave路由器,这个路由器其实也是以容器的形式运行的。

# weave launch
unable to find image 'zettio/weave' locally
......

此时会发现有两个网桥,一个是docker默认生成的,另一个是weave生成的。

Docker之Weave怎么实现跨主机容器互联

Docker之Weave怎么实现跨主机容器互联 

接下来就可以运行应用容器,使用weave提供的网络功能了。

简单使用

准备

1. host1: 10.0.2.6
2. host2: 10.0.2.8
3. host1上的应用容器1: 192.168.0.2/24 host1上的应用容器2: 192.168.1.2/24
4. host2上的应用容器1: 192.168.0.3/24
两台机上均安装docker及weave,并均启动好weave路由容器。

在两台机上均启动一个应用容器。可以直接使用weave run命令,也可以先使用docker run启动好容器,然后使用weave attach命令给容器绑定ip地址。

# weave run 192.168.0.2/24 -itd ubuntu bash

或者

# docker run -itd ubuntu bash
# weave attach 192.168.0.2/24 $id

此时发现两个容器之间是不通的,需要使用weave connect命令在两台weave的路由器之间建立连接。

# weave connect 10.0.2.8

会发现,此时位于两台不同主机上的容器之间可以相互ping通了。但是处于不同子网的两个容器是不能互联的,这样我们就可以使用不同子网进行容器间的网络隔离了。

我们会发现,如果不使用docker的原生网络,在容器内部是不能访问宿主机以及外部网络的。此时我们可以使用weave expose 192.168.0.1/24来给weave网桥添加ip,以实现容器与宿主机网络连通。但是,此时在容器内部依然不能访问外部网络。

我们可以同时使用docker的原生网络和weave网络来实现容器互联及容器访问外网和端口映射。使用外部网络及端口映射的时候就使用docker0网桥,需要容器互联的时候就使用weave网桥。每个容器分配两个网卡。

其他特性应用隔离:不同子网容器之间默认隔离的,即便它们位于同一台物理机上也相互不通(使用-icc=false关闭容器互通);不同物理机之间的容器默认也是隔离的安全性:可以通过weave launch -password weave设置一个密码用于weave peers之间加密通信查看weave路由状态:weave ps问题容器重启问题

如果使用weave,则就不能再使用docker自带的auto-restart feature(如docker run –restart=always redis),因为weave是在docker之外为容器配置的网络,容器重启的时候docker本身不会做这些事情。因而,还需额外的工具来管理容器的状态(比如systemd, upstart等),这些工具要调用weave命令(weave run/start/attach)来启动容器。

关于“Docker之Weave怎么实现跨主机容器互联”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注创新互联行业资讯频道,小编每天都会为大家更新不同的知识点。


分享题目:Docker之Weave怎么实现跨主机容器互联
本文URL:http://csdahua.cn/article/pjijod.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流