weave 建立跨节点docker网络

时间:2022-07-21 08:59:46

weave的工作原理上与利用openvswitch建立vxlan基本一样,都是通过用三层的协议封装二层的报文来进行扩展,weave使用的是udp。weave封装了docker,在操作上为我们隐藏了很多细节,比如docker容器命名空间,虚拟网卡veth的配置,端口映射等等,另外weave还有dns, 加密通信等特点,因此操作起来更加简单快捷,但weave需要更高版本内核和docker的支持。

weave的安装:

weave的安装很方便,可以参照官方github上的说明(https://github.com/weaveworks/weave

sudo curl -L git.io/weave -o /usr/local/bin/weave
sudo chmod a+x /usr/local/bin/weave

这里不探讨安装实现的细节,weave是个脚本,可以看一下它的实现。

1、192.168.1.102上:

# 初始化weave,建立weave-router等,这个操作只需要执行一次。
weave launch
# 设置环境变量
eval $(weave env)
# 运行容器
weave run 192.168.100.100/ -ti ubuntu:latest /bin/bash

2、192.168.1.103上:

# 初始化weave,建立weave-router等,这个操作只需要执行一次。
weave launch 192.168.1.103
# 设置环境变量
eval $(weave env)
# 运行容器
weave run 192.168.100.101/24 -ti ubuntu:latest /bin/bash

3、检查iptables, weave的端口是否被禁止了。

4、测试,在两个容器中互ping,可以发现网络是通的。