Weave Net( https://www.weave.works )是Docker上的虚拟网络,能够将分布式的Docker服务连接为一个虚拟的服务网络,就像在一个局域网中运行同样,并且能够穿透防火墙(须要开放相应端口),从而能够构建出基于Mesh架构的对等服务网络(https://github.com/weaveworks/mesh )。目前Weave版本是独立发展的,还没有归入Docker官方体系。python
项目源码托管在:https://github.com/weaveworks/weavegit
sudo curl -L git.io/weave -o /usr/local/bin/weave sudo chmod a+x /usr/local/bin/weave weave setup weave version weave status
weave launch weave env
weave stop
详细说明在: https://www.weave.works/docs/net/latest/installing-weave/github
weave launch --password xxxx
在多个节点上安装docker和weave软件。docker
weave launch --ipalloc-range 12.32.0.0/12
注意,在阿里云的虚拟服务器,必须使用--ipalloc-range 12.32.0.0/12
等来指定要分配的IP段,默认的已被占用,不能使用。ubuntu
weave launch --ipalloc-range 12.32.0.0/12 192.168.1.8
其中,192.168.1.8为刚才创建的第一个节点(须要其余节点都能访问到)。这样,一个新的节点就加入进去了。如今,运行weave status
就能够看到有两个节点已经造成一个虚拟网络。浏览器
运行Docker容器:服务器
eval $(weave env) weave run --name amaster -it weaveworks/ubuntu
eval $(weave env) weave run --name aworker -it weaveworks/ubuntu
而后在控制台运行ping amaster,应该能够看到响应信息。此时,amaster和aworker已经在同一个虚拟网中,所分配的IP地址在上面所指定的12.32.0.0/12范围内,该地址在外面是不能访问的。网络
weave start aworker
,若是使用docker start将致使虚拟网地址无效。Docker的其它操做相似。WeaveScope能够对Docker运行网络进行监控,安装方法以下。架构
sudo curl -L git.io/scope -o /usr/local/bin/scope sudo chmod a+x /usr/local/bin/scope scope launch
而后,浏览器访问:http://localhost:4040(按上面的scope启动后提示信息)。curl
对于每个参与scope监视的节点也须要安装scope软件,把下面内容保存到docker-compose.yml,而后运行docker-compose up -d
便可。
version: '2' services: probe: container_name: weavescope image: weaveworks/scope network_mode: "host" restart: "always" pid: "host" privileged: true labels: - "works.weave.role=system" volumes: - "/var/run/docker.sock:/var/run/docker.sock:rw" command: - "--probe.docker" - "true"
若是对Docker基础资源(镜像、容器等)进行管理,建议安装Rancher。
在RapspberryPi(树莓派)上,使用下面方法安装weave支持软件。
Docker和Weave均可以支持ARM了【点击查看最新的ARM版源码】。
以下,能够在树莓派下的Raspi系统运行Weave:
sudo wget https://raw.githubusercontent.com/dilgerma/weave/rpi-latest-release/weave -O /usr/local/bin/weave #或:sudo wget git.io/rpi_weave -O /usr/local/bin/weave sudo chmod +x /usr/local/bin/weave sudo weave setup sudo weave launch #...其它操做与上面的X86同样。
其它的板子和操做系统,可能须要进一步测试和移植。
sudo wget https://raw.githubusercontent.com/dilgerma/scope/master/scope -O /usr/local/bin/scope #或:sudo wget https://git.io/scope -O /usr/local/bin/scope chmod +x /usr/local/bin/scope scope launch
上面的只能运行在PC上,树莓派运行报错,发现用的是X86版本的Docker镜像。 或者:#docker pull dilgerm/rpi-scope
,我没试过。
而后,浏览器访问:http://localhost:4040(按上面的scope启动后提示信息)。
对于每个参与scope监视的节点也须要安装scope软件,把下面内容保存到docker-compose.yml,而后运行docker-compose up -d
便可。 由于树莓派目前的Docker-Compose版本比较老,只支持docker-compose.yml的1.0格式。
probe: container_name: weavescope image: dilgerm/rpi-scope net: "host" pid: "host" restart: "always" labels: - "works.weave.role=system" volumes: - "/var/run/docker.sock:/var/run/docker.sock:rw" command: - "--probe.docker"
若是使用docker-compose.yml的2.0版本,能够到:https://github.com/docker/compose/releases/ 下载最新的docker-compose版本,而后安装。
wget https://github.com/docker/compose/archive/1.9.0.zip -O docker-compose.zip unzip docker-compose.zip cd docker-compose sudo pip3 install docker-py -y sudo python3 setup.py install
使用下面的文件内容保存为docker-compose.yml:
version: '2' services: probe: container_name: weavescope image: dilgerm/rpi-scope network_mode: "host" pid: "host" restart: "always" privileged: true labels: - "works.weave.role=system" volumes: - "/var/run/docker.sock:/var/run/docker.sock:rw" command: - "--probe.docker" - "true"
weave启动后,接管Docker的相关操做,从而创建一个新的虚拟网络。
weave的命令行参数以下:
weave --help | help setup version
weave launch <same arguments as 'weave launch-router'> launch-router [--password <pass>] [--trusted-subnets <cidr>,...] [--host <ip_address>] [--name <mac>] [--nickname <nickname>] [--no-restart] [--resume] [--no-discovery] [--no-dns] [--ipalloc-init <mode>] [--ipalloc-range <cidr> [--ipalloc-default-subnet <cidr>]] [--log-level=debug|info|warning|error] <peer> ... launch-proxy [-H <endpoint>] [--without-dns] [--no-multicast-route] [--no-rewrite-hosts] [--no-default-ipalloc] [--no-restart] [--hostname-from-label <labelkey>] [--hostname-match <regexp>] [--hostname-replacement <replacement>] [--rewrite-inspect] [--log-level=debug|info|warning|error] launch-plugin [--no-restart] [--no-multicast-route] [--log-level=debug|info|warning|error]
weave prime
weave env [--restore] config dns-args
weave connect [--replace] [<peer> ...] forget <peer> ...
weave run [--without-dns] [--no-rewrite-hosts] [--no-multicast-route] [<addr> ...] <docker run args> ... start [<addr> ...] <container_id> attach [<addr> ...] <container_id> detach [<addr> ...] <container_id> restart <container_id>
weave expose [<addr> ...] [-h <fqdn>] hide [<addr> ...]
weave dns-add [<ip_address> ...] <container_id> [-h <fqdn>] | <ip_address> ... -h <fqdn> dns-remove [<ip_address> ...] <container_id> [-h <fqdn>] | <ip_address> ... -h <fqdn> dns-lookup <unqualified_name>
weave status [targets | connections | peers | dns | ipam] report [-f <format>] ps [<container_id> ...]
weave stop stop-router stop-proxy stop-plugin
weave reset [--force] rmpeer <peer_id> ...
where <peer> = <ip_address_or_fqdn>[:<port>] <cidr> = <ip_address>/<routing_prefix_length> <addr> = [ip:]<cidr> | net:<cidr> | net:default <endpoint> = [tcp://][<ip_address>]:<port> | [unix://]/path/to/socket <peer_id> = <nickname> | <weave internal peer ID> <mode> = consensus[=<count>] | seed=<mac>,... | observer