weave 是 Weaveworks 开发的容器网络解决方案。weave 创建的虚拟网络可以将部署在多个主机上的容器连接起来。对容器来说,weave 就像一个巨大的以太网交换机,所有容器都被接入这个交换机,容器可以直接通信,无需 NAT 和端口映射。除此之外,weave 的 DNS 模块使容器可以通过 hostname 访问。
实验环境描述
weave 不依赖分布式数据库(例如 etcd 和 consul)交换网络信息,每个主机上只需运行 weave 组件就能建立起跨主机容器网络。我们会在 host1 和 host2 上部署 weave 并实践 weave 的各项特性。
安装部署 weave
weave 安装非常简单,在 host1 和 host2 上执行如下命令:
curl -L git.io/weave -o /usr/local/bin/weave
chmod a+x /usr/local/bin/weave
在 host1 中启动 weave
在 host1 中执行 weave launch
命令,启动 weave 相关服务。weave 的所有组件都是以容器方式运行的,weave 会从 docker hub 下载最新的 image 并启动容器。
weave 运行了三个容器:
weave
是主程序,负责建立 weave 网络,收发数据 ,提供 DNS 服务等。
weaveplugin
是 libnetwork CNM driver,实现 Docker 网络。
weaveproxy
提供 Docker 命令的代理服务,当用户运行 Docker CLI 创建容器时,它会自动将容器添加到 weave 网络。
weave 会创建一个新的 Docker 网络 weave
:
driver 为 weavemesh
,IP 范围 10.32.0.0/12
。
docker network inspect weave
......
"Config": [
{
"Subnet": "10.32.0.0/12"
}
]
......
weave 已经安装配置完毕,下一节我们部署容器并分析 weave 网络底层结构。