weave实现宿主机之间的容器互联

Docker Weave简介

关于weave的原理不做细致的说明,如果想了解weave可以登陆官网:https://www.weave.works/

docke容器之间的文件 容器之间互联的方式_运维

docke容器之间的文件 容器之间互联的方式_bash_02

注意:防火墙一定要打开6783端口,否则无法连接

注意:开启路由转发

#vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

#sysctl  -p

环境搭建:一共两台机器:两台机器都安装Weave和Docker
192.168.111.128  node1
192.168.111.130  node2

一、在所有需要跨主机互通的docker宿主机安装weave。
1在node1上安装weave,并启动weave。
#curl  -L  git.io/weave  -o  /usr/local/bin/weave

#chmod  a+x   /usr/local/bin/weave

docke容器之间的文件 容器之间互联的方式_docker_03

weave version默认不会下载对应容器,初次运行时会提示容器不存在。你可在运行weave launch后在来验证一下

初始化Weave网络

在dev-master-01上初始化Weave网络非常的简单,只需运行 weave launch命令就行了。这条命令是在容器中运行一个weave router,需要在每台主机上都启用这个服务。该服务需要三个docker容器来辅助运行,首次运行时会自动下载相关镜像。另外执行 weave launch之前要保证有bridge-utils网桥工具包

#yum  install  -y bridge-utils

#weave   launch  

docke容器之间的文件 容器之间互联的方式_docker_04

等命令运行结束后,网络就初始化好了。

docke容器之间的文件 容器之间互联的方式_bash_05

另外还会生成一个名字叫weave的网桥,另一个是Docker默认生成的。

docke容器之间的文件 容器之间互联的方式_运维_06

docke容器之间的文件 容器之间互联的方式_bash_07

docker中也会生成一个使用weave的网桥的自定义网络。

docke容器之间的文件 容器之间互联的方式_git_08

weave的这些数据是保存在每台机器上分配的名为 weavedb的容器上的,它是一个data volume容器,只负责数据的持久化。

连接不同主机

node主机需要连接到master主机,只需要在 weave launch后面跟上master主机的ip或者hostname就行了。两台机器就会自动建立集群,并同步所有需要的信息。

主机node02连接到主机node01:

在node02的主机上执行

#weave  launch  192.168.111.128

#weave   connect   192.168.111.128

#weave   version

docke容器之间的文件 容器之间互联的方式_git_09

这个命令相当于在本地启动了weave route,再通过weave connect 192.168.111.128来和192.168.111.131的route容器建立连接。这样weave route就能相互找到remote主机。

docke容器之间的文件 容器之间互联的方式_git_10

运行weave status,可以查看weave的状态信息:

docke容器之间的文件 容器之间互联的方式_bash_11

docke容器之间的文件 容器之间互联的方式_git_12

Weave有三种方式和Docker进行集成,以便运行的容器跑在Weave网络中。

· 使用weave run命令直接运行容器。

· 使用weave env命令修改DOKCER_HOST环境变量的值,使docker client和weave交互,weave和docker daemon交互,自动为容器配置网络,对用户透明。

· 使用weave plugin,在运行容器的时候使用--net=weave参数。

使用weave run命令直接运行容器

我们在node01主机上运行一台容器,命名为b1:

#docker run  --net=weave --name  b1  -it  centos:node01 /bin/bash

docke容器之间的文件 容器之间互联的方式_bash_13

docke容器之间的文件 容器之间互联的方式_运维_14

#docker  run  --net=weave --name b2  -it  centos:node02  /bin/bash

docke容器之间的文件 容器之间互联的方式_bash_15

docke容器之间的文件 容器之间互联的方式_git_16

使用weave env命令运行容器

#eval $(weave env)

#docker run --name d1 -it centos:node01 /bin/bash

docke容器之间的文件 容器之间互联的方式_bash_17

 

docke容器之间的文件 容器之间互联的方式_bash_18

#eval   $(weave env)

#docker  run  --name  d2  -it centos:node02  /bin/bash

docke容器之间的文件 容器之间互联的方式_docke容器之间的文件_19

docke容器之间的文件 容器之间互联的方式_运维_20

到此,如果没有出现任何问题,跨主机的docker容器已经能够互联。

使用weave实现跨主机docker容器互联