weave实现宿主机之间的容器互联
Docker Weave简介
关于weave的原理不做细致的说明,如果想了解weave可以登陆官网:https://www.weave.works/
注意:防火墙一定要打开6783端口,否则无法连接
注意:开启路由转发
#vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
#sysctl -p
环境搭建:一共两台机器:两台机器都安装Weave和Docker192.168.111.128 node1192.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
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
等命令运行结束后,网络就初始化好了。
另外还会生成一个名字叫weave的网桥,另一个是Docker默认生成的。
docker中也会生成一个使用weave的网桥的自定义网络。
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
这个命令相当于在本地启动了 weave route ,再通过 weave connect 192.168.111.128来和192.168.111.131的route容器建立连接。这样weave route就能相互找到remote主机。
运行 weave status ,可以查看 weave 的状态信息:
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
#docker run --net=weave --name b2 -it centos:node02 /bin/bash
使用 weave env 命令运行容器
#eval $(weave env)
#docker run --name d1 -it centos:node01 /bin/bash
#eval $(weave env)
#docker run --name d2 -it centos:node02 /bin/bash
到此,如果没有出现任何问题,跨主机的docker容器已经能够互联。