精华内容
下载资源
问答
  • Weave

    千次阅读 2018-12-25 14:35:34
    weave网络通信模型 weave通过在docker集群的每个主机上启动虚拟的路由器,将主机作为路由器,形成互联互通的网络拓扑,在此基础上,实现容器的跨主机通信。其主机网络拓扑参见下图: 如上图所示,在每一个部署...

    weave网络通信模型

    weave通过在docker集群的每个主机上启动虚拟的路由器,将主机作为路由器,形成互联互通的网络拓扑,在此基础上,实现容器的跨主机通信。其主机网络拓扑参见下图:
    

    在这里插入图片描述

    如上图所示,在每一个部署Docker的主机(可能是物理机也可能是虚拟机)上都部署有一个W(即weave router,它本身也可以以一个容器的形式部署)。
    
    weave网络是由这些weave routers组成的对等端点(peer)构成,并且可以通过weave命令行定制网络拓扑。
    
     
    
    每个部署了weave router的主机之间都会建立TCP和UDP两个连接,保证weave router之间控制面流量和数据面流量的通过。控制面由weave routers之间建立的TCP连接构成,通过它进行握手和拓扑关系信息的交换通信。控制面的通信可以被配置为加密通信。而数据面由weave routers之间建立的UDP连接构成,这些连接大部分都会加密。这些连接都是全双工的,并且可以穿越防火墙。
    
    当容器通过weave进行跨主机通信时,其网络通信模型可以参考下图:
    

    在这里插入图片描述

    从上面的网络模型图中可以看出,对每一个weave网络中的容器,weave都会创建一个网桥,并且在网桥和每个容器之间创建一个veth pair,一端作为容器网卡加入到容器的网络命名空间中,并为容器网卡配置ip和相应的掩码,一端连接在网桥上,最终通过宿主机上weave router将流量转发到对端主机上。
    
    其基本过程如下:
    
    1)容器流量通过veth pair到达宿主机上weave router网桥上。
    
     
    
    2)weave router在混杂模式下使用pcap在网桥上截获网络数据包,并排除由内核直接通过网桥转发的数据流量,例如本子网内部、本地容器之间的数据以及宿主机和本地容
    
       器之间的流量。捕获的包通过UDP转发到所其他主机的weave router端。
    
     
    
    3)在接收端,weave router通过pcap将包注入到网桥上的接口,通过网桥的上的veth pair,将流量分发到容器的网卡上。
    
        
    
    weave默认基于UDP承载容器之间的数据包,并且可以完全自定义整个集群的网络拓扑,但从性能和使用角度来看,还是有比较大的缺陷的:
    
    1)weave自定义容器数据包的封包解包方式,不够通用,传输效率比较低,性能上的损失也比较大。
    
    2)集群配置比较负载,需要通过weave命令行来手工构建网络拓扑,在大规模集群的情况下,加重了管理员的负担。
    

    Weave的应用示例

    1)直接从github下载二进制文件安装。
    
    [root@localhost ~]# wget -O /usr/local/bin/weave https://raw.githubusercontent.com/zettio/weave/master/weave
    
    [root@localhost ~]# chmod a+x /usr/local/bin/weave
    
         
    
    2)启动weave路由器,这个路由器其实也是以容器的形式运行的。(前提是已经启动了docker服务进程)
    
    [root@localhost ~]# weave launch                      
    
    Unable to find image 'weaveworks/weaveexec:latest' locally
    
    Trying to pull repository docker.io/weaveworks/weaveexec ...
    
    latest: Pulling from docker.io/weaveworks/weaveexec
    
    79650cf9cc01: Pull complete
    
    a0a33a8311d7: Pull complete
    
    e95af5f75fa8: Pull complete
    
    7119d296ce72: Pull complete
    
    7f0698aa2117: Pull complete
    
    db711cb12a2b: Pull complete
    
    .......
    
         
    
    3)查看镜像,可以发现上面下载的weave路由容器镜像
    
    [root@localhost ~]# docker images
    
    REPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE
    
    docker.io/weaveworks/weaveexec     latest              e4870c565dfa        11 hours ago        107.7 MB
    
    docker.io/weaveworks/weave         latest              70bd2bf0b0eb        11 hours ago        58.22 MB
    
    docker.io/weaveworks/weavedb       latest              9a4a497119c4        3 months ago        252 B
    
    docker.io/centos                 latest              67591570dd29        5 months ago        191.8 MB
    
         
    
    4)此时会发现有两个网桥,一个是Docker默认生成的,另一个是Weave生成的。
    
    [root@localhost ~]# brctl show                                     #yum安装bridge-utils工具后,就会出现brctl命令    
    
    bridge name bridge id       STP enabled interfaces
    
    docker0     8000.0242376456d7   no 
    
    weave       8000.32298bba31f1   no      vethwe-bridge
    
         
    
    查看运行的容器,发现weave路由容器已经自动运行
    
    [root@localhost ~]# docker ps
    
    CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS               NAMES
    
    c5aacecbe40e        weaveworks/weave:latest   "/home/weave/weaver -"   6 minutes ago       Up 6 minutes                            weave
    
         
    
    weave关闭
    
    [root@localhost ~]# weave stop
    
    或者直接关闭weave容器
    
    [root@localhost ~]# docker stop weave
    
    [root@localhost ~]# docker rm weave
    
      
    
    weave命令帮助
    
    [root@localhost ~]#weave --help
    
    Usage:
    
        
    
    weave --help | help
    
          setup
    
          version
    
        
    
    weave launch        [--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>]]
    
                        [--plugin=false] [--proxy=false]
    
                        [-H <endpoint>] [--without-dns] [--no-multicast-route]
    
                        [--no-rewrite-hosts] [--no-default-ipalloc]
    
                        [--hostname-from-label <labelkey>]
    
                        [--hostname-match <regexp>]
    
                        [--hostname-replacement <replacement>]
    
                        [--rewrite-inspect]
    
                        [--log-level=debug|info|warning|error]
    
                        <peer> ...
    
        
    
    weave prime
    
        
    
    weave env           [--restore]
    
          config
    
          dns-args
    
        
    
    weave connect       [--replace] [<peer> ...]
    
          forget        <peer> ...
    
        
    
    weave attach        [--without-dns] [--rewrite-hosts] [--no-multicast-route]
    
                          [<addr> ...] <container_id>
    
          detach        [<addr> ...] <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
    
        
    
    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
    
        
    
    接下来就可以运行应用容器,使用weave提供的网络功能了。
    

    Weave的应用示例

    1)机器环境准备:
    
    node-1    103.10.86.238 
    
    node-2    103.10.86.239    
    
     
    
    node-1宿主机上的应用容器my-test1: 192.168.0.2/24
    
    node-2宿主机上的应用容器my-test2: 192.168.0.3/24
    
     
    
    两台机上均安装Docker及Weave,并均启动好Weave路由容器(安装及启动操作如上)。最好关闭两台机器的防火墙!(如果打开防火墙,需要开放6783端口)
    
     
    
    2)在两台机上均启动一个应用容器,有以下两种方式:
    
    第一种方式:可以直接使用weave run命令;
    
    [root@node-1 ~]# weave run 192.168.0.2/24 -itd docker.io/centos /bin/bash
    
    The 'weave run' command has been removed as of Weave Net version 2.0
    
    Please see release notes for further information
    
     
    
    由上可知,weave在2.0版本之后就没有“docker run”这个命令了,所以还是使用下面的第二种方式
    
     
    
    第二种方式:先使用docker run启动好容器,然后使用weave attach命令给容器绑定IP地址
    
    在node-1机器上启动第一个容器my-test1,容器ip绑定为192.168.0.2
    
    [root@node-1 ~]# docker run -itd --name=my-test1 docker.io/centos /bin/bash
    
    06d70049141048798519bfa1292ed81068fc28f1e142a51d22afd8f3fc6d0239
    
    [root@node-1 ~]# weave attach 192.168.0.2/24 my-test1           #使用容器名称或容器id都可以;即给my-test1容器绑定ip为192.168.0.2
    
    192.168.0.2
    
     
    
    [root@node-1 ~]# docker exec -ti my-test1 /bin/bash
    
    [root@00efd39d3a7d /]# ifconfig              #执行安装yum install -y net-tools,就会出现ifconfig命令
    
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    
            inet 172.17.0.2  netmask 255.255.0.0  broadcast 0.0.0.0
    
            inet6 fe80::42:acff:fe11:2  prefixlen 64  scopeid 0x20<link>
    
            ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
    
            RX packets 5559  bytes 11893401 (11.3 MiB)
    
            RX errors 0  dropped 0  overruns 0  frame 0
    
            TX packets 5287  bytes 410268 (400.6 KiB)
    
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
     
    
    ethwe: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1376
    
            inet 192.168.0.2  netmask 255.255.255.0  broadcast 0.0.0.0
    
            inet6 fe80::88b0:ddff:fea2:58c5  prefixlen 64  scopeid 0x20<link>
    
            ether 8a:b0:dd:a2:58:c5  txqueuelen 0  (Ethernet)
    
            RX packets 97  bytes 7234 (7.0 KiB)
    
            RX errors 0  dropped 0  overruns 0  frame 0
    
            TX packets 66  bytes 4316 (4.2 KiB)
    
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
     
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
    
            inet 127.0.0.1  netmask 255.0.0.0
    
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
    
            loop  txqueuelen 0  (Local Loopback)
    
            RX packets 21  bytes 2352 (2.2 KiB)
    
            RX errors 0  dropped 0  overruns 0  frame 0
    
            TX packets 21  bytes 2352 (2.2 KiB)
    
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
     
    
    在node-2机器上启动容器my-test2,容器ip绑定为192.168.0.3
    
    [root@node-2 ~]# docker run -itd --name=my-test2 docker.io/centos /bin/bash
    
    8f2ecc2449a0be1f1be2825cb211f275f9adb2109249ab0ff1ced6bbb92dd733
    
    [root@node-2 ~]# weave attach 192.168.0.3/24 my-test2                     //weave detach 192.168.0.3/24 my-test2表示删除这个绑定
    
    192.168.0.3
    
    [root@node-2 ~]# docker exec -ti my-test2 /bin/bash
    
    [root@e0ed62d30226 /]# ifconfig                                          //或者ip addr命令查看
    
    ......
    
    ethwe: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1376
    
            inet 192.168.0.3  netmask 255.255.255.0  broadcast 0.0.0.0
    
            inet6 fe80::3064:8fff:fe3c:909a  prefixlen 64  scopeid 0x20<link>
    
            ether 32:64:8f:3c:90:9a  txqueuelen 0  (Ethernet)
    
            RX packets 63  bytes 4734 (4.6 KiB)
    
            RX errors 0  dropped 0  overruns 0  frame 0
    
            TX packets 34  bytes 2580 (2.5 KiB)
    
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
     
    
    温馨提示:
    
    上面在docker run启动容器时,可以添加--net=none参数,这个表示容器启动后不使用默认的虚拟网卡docker0自动分配的ip,而是使用weave绑定的ip;
    
    当然也可以选择不添加这个参数去启动容器,这样,容器启动后就会有两个网卡,即两个ip:
    
    一个是docker0自动分配的ip,这个适用于同主机内的容器间通信,即同主机的容器使用docker0分配的ip可以相互通信;另一个就是weave网桥绑定的ip。
    
     
    
    3)容器互联
    
    默认情况下,上面在node-1和node-2两台宿主机上创建的2个容器间都是相互ping不通的。需要使用weave connect命令在两台weave的路由器之间建立连接。
    
    [root@node-1 ~]# weave connect 103.10.86.239                            //连接的是对方宿主机的ip,注意"weave forget ip" z则表示断开这个连接
    
     
    
    然后就会发现,此时位于两台不同主机上的相同子网段内的容器之间可以相互ping通了
    
    [root@node-1 ~]# docker exec -ti my-test1 /bin/bash
    
    [root@00efd39d3a7d /]# ping 192.168.0.3
    
    PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.
    
    64 bytes from 192.168.0.3: icmp_seq=1 ttl=64 time=3.27 ms
    
    64 bytes from 192.168.0.3: icmp_seq=2 ttl=64 time=0.657 ms
    
    .....
    
     
    
    [root@node-2 ~]# docker exec -ti my-test2 /bin/bash
    
    [root@e0ed62d30226 /]# ping 192.168.0.2
    
    PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
    
    64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=0.453 ms
    
    64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=0.320 ms
    
    .....
    
     
    
    再在node-1上启动容器my-test3,绑定ip为192.168.0.8,在node-2上启动容器my-test4,绑定ip为192.168.0.10
    
    会发现这四个在同一个子网内的容器都是可以相互ping通的。
    
     
    
    --------------------------------------------------------------------------------------------------------
    
    再接着启动与上面不在同一个子网内的容器
    
    node-1上启动容器my-test4,绑定ip为192.168.10.10,node-2上启动容器my-test5,绑定ip为192.168.10.20
    
     
    
    [root@node-1 ~]# docker run -itd --name=my-test5 docker.io/centos /bin/bash
    
    2896b6cad7afcd57d8b9091a020f1837992bade2567752614caf3cb645b6d315
    
    [root@node-1 ~]# weave attach 192.168.10.10/24 my-test5
    
    192.168.10.10
    
    [root@node-1 ~]# docker exec -ti my-test5 /bin/bash
    
    [root@2896b6cad7af /]#
    
     
    
    [root@node-2 ~]# docker run -itd --name=my-test6 docker.io/centos /bin/bash
    
    b4627f0a6e657f5dc719c917349ad832e15f360f75d5743b489f8e7e18b7dc2e
    
    [root@node-2 ~]# weave attach 192.168.10.20/24 my-test6
    
    192.168.10.20
    
    [root@node-2 ~]# docker exec -ti my-test6 /bin/bash
    
    [root@b4627f0a6e65 /]# ping 192.168.10.10
    
    PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
    
    64 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.417 ms
    
    64 bytes from 192.168.10.10: icmp_seq=2 ttl=64 time=0.324 ms
    
    ......
    
     
    
    会发现在跨主机情况下,相同子网内的容器是可以相互通信的;但是处于不同子网的两个容器是不能互联的,尽管这两个容器在同一个主机下也是不能通信的!
    
    这样的好处就是:使用不同子网进行容器间的网络隔离了。
    
     
    
    --------------------------------------------------------------------------------------------------------
    
    注意一个细节,在使用weave的时候:
    
    1)如果使用Docker的原生网络,在容器内部是可以访问宿主机以及外部网络的。也就是说在启动容器的时候,使用了虚拟网卡docker0分配ip,
    
    这种情况下,登陆容器后是可以ping通宿主机ip,并且可以对外联网的!
    
     
    
    这个时候,在宿主机上是可以ping通docker0网桥的ip,但是ping不通weave网桥的ip。这个时候可以使用
    
    "weave expose 192.168.0.1/24"命令来给weave网桥添加IP,以实现容器与宿主机网络连通。如下:
    
     
    
    默认在node-1和node-2宿主机上是ping不通my-test1容器的weave网桥ip的
    
    [root@node-1 ~]# ping 192.168.0.2
    
    PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
    
    .......
    
     
    
    [root@node-2 ~]# ping 192.168.0.3
    
    PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
    
    .......
    
     
    
    在node-1和node-2两台机器上都添加weave网桥的ip
    
    [root@node-1 ~]# weave expose 192.168.0.1/24            //注意这里的192.168.0.1/24是上面my-test1、my-test2、my-test3、my-test4容器的weave网桥的网关地址
    
    [root@node-2 ~]# weave expose 192.168.0.1/24            //weave hide 192.168.0.1/24表示覆盖/删除这个设置
    
     
    
    然后再在两台宿主机上ping上面同网段内的容器,发现都可以ping通了
    
    [root@node-1 ~]# ping 192.168.0.10
    
    PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.
    
    64 bytes from 192.168.0.3: icmp_seq=4 ttl=64 time=0.391 ms
    
    64 bytes from 192.168.0.3: icmp_seq=5 ttl=64 time=0.363 ms
    
     
    
    [root@node-2 ~]# ping 192.168.0.8
    
    PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.
    
    64 bytes from 192.168.0.3: icmp_seq=4 ttl=64 time=0.391 ms
    
    64 bytes from 192.168.0.3: icmp_seq=5 ttl=64 time=0.363 ms
    
     
    
    然后再给另一网段的容器的weave网桥添加ip(可以在宿主机上对不同网段的容器的weave网桥添加ip)
    
    [root@node-1 ~]# weave expose 192.168.10.1/24
    
    [root@node-2 ~]# weave expose 192.168.10.1/24
    
     
    
    [root@node-1 ~]# ping 192.168.10.20
    
    PING 192.168.10.20 (192.168.10.20) 56(84) bytes of data.
    
    64 bytes from 192.168.10.20: icmp_seq=1 ttl=64 time=2.50 ms
    
    64 bytes from 192.168.10.20: icmp_seq=2 ttl=64 time=0.318 ms
    
     
    
    [root@node-2 ~]# ping 192.168.10.10
    
    PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
    
    64 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.335 ms
    
    64 bytes from 192.168.10.10: icmp_seq=2 ttl=64 time=0.310 ms
    
     
    
    2)如果不适用Docker的原生网络,即在容器启动的时候,添加--net=none,这样容器启动后,就不会使用docker0网卡分配ip。
    
    这种情况下,登陆容器后发现不能访问宿主机以及外部网络的,而在宿主机上也不能ping通容器ip。
    
    这个时候添加对应容器网段的weave网桥ip,这样可以实现容器与宿主机网络连通。但是,此时在容器内部依然不能访问外部网络。
    
     
    
    所以说,可以同时使用Docker的原生网络和weave网络来实现容器互联及容器访问外网和端口映射。
    
    使用外部网络及端口映射的时候就使用docker0网桥,需要容器互联的时候就使用weave网桥。每个容器分配两个网卡。
    

    weave的其他特性

    1)应用隔离:
    
    不同子网容器之间默认隔离的,即便它们位于同一台物理机上也相互不通(使用-icc=false关闭容器互通);不同物理机之间的容器默认也是隔离的
    
      
    
    2)安全性:
    
    可以通过weave launch -password wEaVe设置一个密码用于weave peers之间加密通信
    
      
    
    3)查看weave路由状态:weave ps
    
    [root@node-1 ~]# weave ps
    
    weave:expose 06:9d:3b:91:3d:f3 192.168.0.1/24 192.168.10.1/24
    
    2896b6cad7af 56:46:8c:14:42:e6 192.168.10.10/24
    
    c9aa381c1203 4a:0d:16:4d:bb:c2 192.168.0.8/24
    
    00efd39d3a7d 8a:b0:dd:a2:58:c5 192.168.0.2/24
    
      
    
    [root@node-2 ~]# weave ps
    
    weave:expose 26:b8:82:03:ff:24 192.168.0.1/24 192.168.10.1/24
    
    b4627f0a6e65 22:10:c4:b8:87:b3 192.168.10.20/24
    
    61722c59e3a0 d2:d5:34:1e:86:df 192.168.0.10/24
    
    e0ed62d30226 32:64:8f:3c:90:9a 192.168.0.3/24
    
      
    
    4)效率
    
    weave 路由通过pcap捕获包这种方式来完成封装和解封装这个过程,效率应该是有问题的。
    
    这个过程中需要将数据包从内核态拷贝到用户态,然后按照自定义的格式完成封装和解封装。
    
     
    
    --------------------------------------------------------------------------------------------------
    
    在已经关闭了weave(weave stop)后,发现weave网桥信息还在:
    
    [root@node-2 ~]# brctl show
    
    bridge name bridge id       STP enabled interfaces
    
    docker0     8000.0242b0c9bf2d   no     
    
    weave       8000.22a85b2682a1   no      vethwe-bridge
    
     
    
    [root@node-2 ~]# ifconfig
    
    ........
    
     
    
    weave: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1376
    
            inet 192.168.100.1  netmask 255.255.255.0  broadcast 0.0.0.0
    
            inet6 fe80::20a8:5bff:fe26:82a1  prefixlen 64  scopeid 0x20<link>
    
            ether 22:a8:5b:26:82:a1  txqueuelen 0  (Ethernet)
    
            RX packets 57  bytes 3248 (3.1 KiB)
    
            RX errors 0  dropped 0  overruns 0  frame 0
    
            TX packets 22  bytes 1460 (1.4 KiB)
    
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
     
    
    删除weave网桥信息(其他ifconfig命令查出的网络设备删除的方法类似):
    
    [root@node-2 ~]# ip link set dev weave down
    
    [root@node-2 ~]# brctl delbr weave
    
     
    
    [root@node-2 ~]# brctl show
    
    bridge name bridge id       STP enabled interfaces
    
    docker0     8000.0242b0c9bf2d   no 
    

    转自https://blog.csdn.net/mnasd/article/details/83060043

    展开全文
  • weave

    2016-03-03 18:12:00
    目前实现Docker网络的开源方案有Weave、Kubernetes、Flannel、Pipework以及SocketPlane等,其中Weave被评价为目前最靠谱的,那么这里就对Weave的基本原理及使用方法做个总结 简介 Weave是由Zett.io公司开发的,...

    Docker的原生网络支持非常有限,且没有跨主机的集群网络方案。目前实现Docker网络的开源方案有Weave、Kubernetes、Flannel、Pipework以及SocketPlane等,其中Weave被评价为目前最靠谱的,那么这里就对Weave的基本原理及使用方法做个总结

     

    简介

    Weave是由Zett.io公司开发的,它能够创建一个虚拟网络,用于连接部署在多台主机上的Docker容器,这样容器就像被接入了同一个网络交换机,那些使用网络的应用程序不必去配置端口映射和链接等信息。外部设备能够访问Weave网络上的应用程序容器所提供的服务,同时已有的内部系统也能够暴露到应用程序容器上。Weave能够穿透防火墙并运行在部分连接的网络上,另外,Weave的通信支持加密,所以用户可以从一个不受信任的网络连接到主机。

    这里写图片描述

    这里写图片描述

     

    安装与启动

    # sudo wget -O /usr/local/bin/weave https://raw.githubusercontent.com/zettio/weave/master/weave
    # sudo chmod a+x /usr/local/bin/weave

    启动weave路由器,这个路由器其实也是以容器的形式运行的。

    # weave launch
    Unable to find image 'zettio/weave' locally
    ......
    

    此时会发现有两个网桥,一个是Docker默认生成的,另一个是Weave生成的。 
    这里写图片描述

    这里写图片描述 
    接下来就可以运行应用容器,使用weave提供的网络功能了。

    简单使用

    准备 
    1. host1: 10.0.2.6 
    2. host2: 10.0.2.8 
    3. host1上的应用容器1: 192.168.0.2/24 host1上的应用容器2: 192.168.1.2/24 
    4. host2上的应用容器1: 192.168.0.3/24 
    两台机上均安装Docker及Weave,并均启动好Weave路由容器。

    在两台机上均启动一个应用容器。可以直接使用weave run命令,也可以先使用docker run启动好容器,然后使用weave attach命令给容器绑定IP地址。

    # weave run 192.168.0.2/24 -itd ubuntu bash
    

    或者

    # docker run -itd ubuntu bash
    # weave attach 192.168.0.2/24 $ID
    

    此时发现两个容器之间是不通的,需要使用weave connect命令在两台weave的路由器之间建立连接。

    # weave connect 10.0.2.8
    

    会发现,此时位于两台不同主机上的容器之间可以相互ping通了。但是处于不同子网的两个容器是不能互联的,这样我们就可以使用不同子网进行容器间的网络隔离了。

    我们会发现,如果不使用Docker的原生网络,在容器内部是不能访问宿主机以及外部网络的。此时我们可以使用weave expose 192.168.0.1/24来给weave网桥添加IP,以实现容器与宿主机网络连通。但是,此时在容器内部依然不能访问外部网络。 
    我们可以同时使用Docker的原生网络和weave网络来实现容器互联及容器访问外网和端口映射。使用外部网络及端口映射的时候就使用docker0网桥,需要容器互联的时候就使用weave网桥。每个容器分配两个网卡。


    其他特性

    • weave其他特性

      • 应用隔离:不同子网容器之间默认隔离的,即便它们位于同一台物理机上也相互不通;不同物理机之间的容器默认也是隔离的
      • 物理机之间容器互通:weave connect $OTHER_HOST
      • 动态添加网络:对于不是通过weave启动的容器,可以通过weave attach 10.0.1.1/24 $id来添加网络(detach删除网络)
      • 安全性:可以通过weave launch -password wEaVe设置一个密码用于weave peers之间加密通信
      • 与宿主机网络通信:w eave expose 10.0.1.102/24,这个IP会配在weave网桥上
      • 查看weave路由状态:weave ps
      • 通过NAT实现外网访问docker容器

    问题

      1. 容器重启问题 
        如果使用weave,则就不能再使用docker自带的auto-restart feature(如docker run –restart=always redis),因为weave是在docker之外为容器配置的网络,容器重启的时候docker本身不会做这些事情。因而,还需额外的工具来管理容器的状态(比如systemd, upstart等),这些工具要调用weave命令(weave run/start/attach)来启动容器。

     

     

    转载于:https://www.cnblogs.com/baxk/p/5239636.html

    展开全文
  • python-weave

    2018-08-05 01:23:40
    weave的安装包,具体安装过程,先切换到cmd模式,然后再切换到文件目录。然后执行命令 python setup.py install
  • Weave Cloud is built using these Open Source projects: Weave Scope, a powerful container visualization tool that automatically maps Docker containers and their interactions, Weave Cortex, a ...
  • 一个适配器,在容器内运行并确保容器在运行其入口点之前连接到 weave 网络。 运行适配器 $ docker run -d --name powerstrip-weave \ --expose 80 \ -v /var/run/docker.sock:/var/run/docker.sock \ binocarlos/...
  • 默认情况下,这会从 Github 下载 Weave 二进制文件并将其安装在 /usr/local/bin/weave 下。 如果要通过包管理系统安装: class { 'weave' : install_method => ' package ' , package_name => ' weave ' , ...
  • Weave 版本 1.9 ()。 要查看正在运行的 Weave 版本,请单击 有关您可以使用 Wea​​ve 执行的操作的一些示例,请单击 执照 Weave 是根据许可分发的。 下载 文档 您可以找到管理控制台用户指南 Weave 支持来自多个...
  • Weave Scope

    千次阅读 2017-07-24 18:52:20
    安装Weave Scope Weave Scope这个项目会自动生成容器之间的关系图,方便理解容器之间的关系,也方便监控容器化和微服务化的应用。(直接Copy过来的)。 1.安装Docker(略) 2.安装Weave Scope项目 下载二进制安装...

    安装Weave Scope

    Weave Scope这个项目会自动生成容器之间的关系图,方便理解容器之间的关系,也方便监控容器化和微服务化的应用。(直接Copy过来的)

    1.安装Docker(略)

    2.安装Weave Scope项目

    下载二进制安装文件:
    sudo wget -0 /usr/local/bin/weave-scope https://git.io/scope
    
    赋予权限:
    sudo chmod a+x /usr/local/bin/weave-scope
    
    启动:
    weave-scope launch(脚本会从Docker Hub上下载最新Scope影像)
    在浏览器输入http://ip:4040,就会看到weave scope界面
    
    停止:
    weave-scope stop
    

     
    
     
    

    展开全文
  • Weave播放集导入器使用此格式将您的世界导入Weave平台,以便您可以在制作的世界中播放Weave。 此外,您可以将要提交的剧集提交到Weave店面中,以便全世界都能购买和玩耍。 降价是什么? Markdown是一种轻量级的...
  • 使用的时https://git.io/weave-kube 的yaml,创建weave-net的pod后一直是CrashLoopBackLoop状态, docker 日志显示ipset v6.32 :Kernel error received: Operation not permitted.
  • weave网络介绍

    2020-11-09 17:32:48
    Weave网络介绍 Weave是 Weaveworks 开发的容器网络解决方案。weave 创建的虚拟网络可以将部署在多个主机上的容器连接起来。对容器来说,weave 就像一个巨大的以太网交换机,所有容器都被接入这个交换机,容器可以...

    Weave网络介绍
    Weave是 Weaveworks 开发的容器网络解决方案。weave 创建的虚拟网络可以将部署在多个主机上的容器连接起来。对容器来说,weave 就像一个巨大的以太网交换机,所有容器都被接入这个交换机,容器可以直接通信,无需 NAT 和端口映射。除此之外,weave 的 DNS 模块使容器可以通过 hostname 访问。

    使用环境
    weave 不依赖分布式数据库(例如 etcd 和 consul)交换网络信息,每个主机上只需运行 weave 组件就能建立起跨主机容器网络。我们会在 host1 和 host2 上部署 weave 并实践 weave 的各项特性。

    Weava下载安装
    其实就是下载一个weave的命令

    curl -L git.io/weave -o /usr/local/bin/weave
    chmod +x /usr/local/bin/weave
    使用weave可以进行跨主机的容器网络的通信,这时需要在其中一台下载一些weave需要的组件

    weave launch
    启动 weave 相关服务。weave 的所有组件都是以容器方式运行的,weave 会从 docker hub 下载最新的 image 并启动容器

    Weave网络部署
    实验环境

    一台已安装docker的linux系统即可

    实验目的

    安装完成weave并启动服务,进行网络分析,理解weave网络的原理结构

    实验步骤

    按照以上步骤两台主机下载安装weave命令

    启动weave服务
    第一次启动过程中会下载一些所需要的组件

    [root@localhost ~]# weave launch

    WARNING: existing iptables rule

    '-A FORWARD -j REJECT --reject-with icmp-host-prohibited'
    

    will block name resolution via weaveDNS - please reconfigure your firewall.
    8dfaae8e2441dab13f29d45777033161dd61ee86a93dc304cc33d956c957db0e
    下载启动完成后,会报出一条警告(WARNING),需要添加一条防火墙策略

    [root@localhost ~]# iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited
    [root@localhost ~]# iptables-save
    weave启动完成后,会创建出一个新的docker网络weave,驱动类型为weavemesh

    [root@localhost ~]# docker network ls
    NETWORK ID NAME DRIVER SCOPE
    b5f7f7433bac bridge bridge local
    dc8bfdbda464 host host local
    ecbab8a758e6 none null local
    867d84127656 weave weavemesh local
    同时也会多出三个关于weave服务的镜像

    [root@localhost ~]# docker images
    REPOSITORY TAG
    weaveworks/weaveexec 2.6.2
    weaveworks/weave 2.6.2
    busybox latest
    httpd latest
    centos latest
    weaveworks/weavedb latest
    weave:是主程序,负责建立weave网络,收发数据,提供DNS服务等

    weaveexec:是libnetwork CNM dirver,实现docker网络

    weavedb:提供 Docker 命令的代理服务,当用户使用weave集群中的docker创建容器时,它会自动将容器添加到 weave 网络。

    查看weave网络信息,10.32.0.0/12是weave的默认网段

    [root@localhost ~]# docker network inspect weave

    “Subnet”: “10.32.0.0/12”

    使用weave网络
    执行以下命令,类似于进入一个网络的命名空间,在此模式下创建的容器将会默认使用weave网络的ip网段

    [root@localhost ~]# eval $(weave env)
    运行容器查看获取ip,会发现一共有两个网段的网卡,一个是用于与docker0网卡桥接,可以连接外网,一个是weave网络

    [root@localhost ~]# docker run -itd --name bbox1 busybox
    e037fae99556cb18885263eea8828209da046bd5ff706f0f9e75191f009e0d1c
    [root@localhost ~]# docker exec -it bbox1 ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    14: eth0@if15: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
    valid_lft forever preferred_lft forever
    16: ethwe@if17: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1376 qdisc noqueue
    link/ether 12:26:df:0d:77:f6 brd ff:ff:ff:ff:ff:ff
    inet 10.32.0.1/12 brd 10.47.255.255 scope global ethwe
    valid_lft forever preferred_lft forever
    退出weave的空间

    [root@localhost ~]# eval $(weave env --restore)
    运行容器查看是否不使用weave网络,只有一个docker0的桥接网卡即可

    [root@localhost ~]# docker run -itd --name bbox2 busybox
    5053ec897dd4a891638cde416298754a289ae4d9602e6cfe735fef096a00d3c8
    [root@localhost ~]# docker exec -it bbox2 ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    18: eth0@if19: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
    valid_lft forever preferred_lft forever
    删除bbox2容器,以防一会混乱容器

    [root@localhost ~]# docker rm -f bbox2
    分析weave网络结构
    192.168.1.12

    进入weave网络,并查看容器ip

    [root@localhost ~]# eval $(weave env)
    [root@localhost ~]# docker exec -it bbox1 ip a

    14: eth0@if15: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
    valid_lft forever preferred_lft forever
    16: ethwe@if17: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1376 qdisc noqueue
    link/ether 12:26:df:0d:77:f6 brd ff:ff:ff:ff:ff:ff
    inet 10.32.0.1/12 brd 10.47.255.255 scope global ethwe
    valid_lft forever preferred_lft forever
    网卡eth0是14@15,网卡eth1是16@17,那在物理机网络中,应该存在15@14和17@16两块桥接网卡

    [root@localhost ~]# ip a

    15: veth6acf677@if14: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
    link/ether 46:ac:ac:06:9a:1e brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::44ac:acff:fe06:9a1e/64 scope link
    valid_lft forever preferred_lft forever
    17: vethwepl69282@if16: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1376 qdisc noqueue master weave state UP group default
    link/ether 96:17:02:33:bf:9e brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::9417:2ff:fe33:bf9e/64 scope link
    valid_lft forever preferred_lft forever
    查看桥接网卡,docker0的接口对应着15@14的veth6acf677,weave的接口对应着17@16的vethwepl69282,而且还多了一块vethwe-bridege,其实这个网卡在主机中也是存在的。

    [root@localhost ~]# brctl show
    bridge name bridge id STP enabled interfaces
    docker0 8000.024217bee795 no veth6acf677
    virbr0 8000.525400d7704d yes virbr0-nic
    weave 8000.263aad39cd6c no vethwe-bridge
    vethwepl69282
    当weave被使用启动之后,物理机会多出好多块网卡,我将ip a查看物理机网卡信息后的内容整理如下

    物理机网络信息

    [root@localhost ~]# ip a
    6: datapath:
    8: weave:
    11: vethwe-datapath@vethwe-bridge: master datapath
    12: vethwe-bridge@vethwe-datapath: master weave
    13: vxlan-6784: master datapath
    15: veth6acf677@if14: master docker0
    17: vethwepl69282@if16: master weave
    这里需要结合容器内的网卡信息来捋通,各个网卡之间的关系

    bbox1容器内网络信息

    [root@localhost ~]# docker exec -it bbox1 ip a

    14: eth0@if15:
    16: ethwe@if17:
    物理机的17号网卡vethwepl69282与容器内的16号网卡ethwe是用于容器内的网络与weave网络连接的网卡。

    在查看物理机信息时,17号网卡的信息中有master weave,他所连接的是weave网卡

    使用brctl show查看到weave中桥接了两块网卡,一个是17号网卡vethwepl69282,一个是vethwe-bridge

    weave网络关系

    如图所示:

    查看12号网卡vethwe-bridge时,他所绑定的网卡为11号网卡vethwe-datapath,如图红线处所示,第一次看到两个绑定的卡都在物理机内,之前的网卡都是一块在容器内,一块在物理机来进行绑定的

    11号网卡vethwe-datapath的master是datapath如绿线所示

    12好网卡的vethwe-bridge的master是weave,如蓝线所示

    这里又冒出一个datapath,在查看物理网卡是多出来的网卡还有13号网卡vxlan-6784,它的master也是datapath

    查看datapath的属性

    [root@localhost ~]# ip -d link

    提取以下关键信息

    6: datapath:

    openvswitch addrgenmode eui64 numtxqueues
    

    它的属性为openvswitch,是一个开源的软件交换机,是一个模拟二层数据交换的封装,在一开始就说过weave是一个巨大到以太网交换机,关于openvswitch的其他特点及功能,请查阅其他资料,这里不多赘述。只需要知道它有交换机的功能即可。

    总结weave网络

    如图:
    在这里插入图片描述

    weave理论

    weave 网络包含两个虚拟交换机: weave 和 datapath, vethwe-bridge 和 vethwe-datapath 将二者连接在一起。

    weave 和 datapath 分工不同,weave 负责将容器接入 weave 网络,datapath 负责在主机间vxlan 隧道中并收发数据。

    如果还是不懂,请参考原理图将分析weave网络结构再看一遍。

    这是单主机内一个容器的原理,两个容器无非就是docker0桥接两个容器的网卡,weave也会作为第二个容器的master然后,连接两个容器到vethwe-bridge然后通过vxlan进行与其他主机通信

    详情参考下一篇文档

    weave网络隔离(手动指定)
    指定地址参数WEAVE_CIDR

    指定网段:WEAVE_CIDR=net:10.10.0.0/24

    指定ip:WEAVE_CIDR=ip:10.10.10.10/24

    生成环境中一般会使用指定网段能多一些。

    指定网段
    指定网段不能超出10.32.0.0/12的范围

    如下,指定网段为10.32.2.0/24

    [root@localhost ~]# docker run -e WEAVE_CIDR=net:10.32.2.0/24 -it busybox
    查看ip,自动分配了ip为10.32.2.1/24

    / # ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    36: eth0@if37: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
    link/ether 02:42:ac:11:00:04 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.4/16 brd 172.17.255.255 scope global eth0
    valid_lft forever preferred_lft forever
    38: ethwe@if39: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1376 qdisc noqueue
    link/ether 86:55:8e:63:4e:a1 brd ff:ff:ff:ff:ff:ff
    inet 10.32.2.1/24 brd 10.32.2.255 scope global ethwe
    valid_lft forever preferred_lft forever
    / # ip r
    default via 172.17.0.1 dev eth0
    10.32.2.0/24 dev ethwe scope link src 10.32.2.1
    172.17.0.0/16 dev eth0 scope link src 172.17.0.4
    224.0.0.0/4 dev ethwe scope link
    这时候如果使用这个容器来ping之前的bbox1的10.32.0.1/12是ping不通的

    因为10.32.0.0/12和10.32.2.0/24不是同一个网段

    / # ping bbox1
    PING bbox1 (10.32.0.1): 56 data bytes
    指定ip
    指定ip地址为10.32.6.6/24

    [root@localhost ~]# docker run -e WEAVE_CIDR=ip:10.32.6.6/24 -it busybox
    查看ip

    / # ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    40: eth0@if41: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
    link/ether 02:42:ac:11:00:04 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.4/16 brd 172.17.255.255 scope global eth0
    valid_lft forever preferred_lft forever
    42: ethwe@if43: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1376 qdisc noqueue
    link/ether 26:1a:91:76:36:13 brd ff:ff:ff:ff:ff:ff
    inet 10.32.6.6/24 brd 10.32.6.255 scope global ethwe
    valid_lft forever preferred_lft forever
    外部网络访问weave网络
    前面的实验中,可能有的人回去尝试ping使用物理机去ping容器的weave网络的ip,实则是ping不同的,因为weave网络还没有网关

    一般来说桥接卡都会有一个地址

    [root@localhost ~]# ip a

    8: weave: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1376 qdisc noqueue state UP group default qlen 1000
    link/ether 26:3a:ad:39💿6c brd ff:ff:ff:ff:ff:ff
    inet6 fe80::243a:adff:fe39:cd6c/64 scope link
    valid_lft forever preferred_lft forever

    weave 是一个私有的 VxLAN 网络,默认与外部网络隔离。外部网络如何才能访问到 weave 中的容器呢?

    答案是:

    首先将主机加入到 weave 网络。
    然后把主机当作访问 weave 网络的网关。
    将主机加入weave网络
    只需一条命令即可,然后会弹出一个IP地址,这个ip就是分配给weave网卡的

    weave expose --with-masquerade:仅允许本机访问容器,其他主机不可以。

    [root@localhost ~]# weave expose
    10.32.0.3
    然后再次查看weave的网卡信息

    [root@localhost ~]# ip a

    8: weave: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1376 qdisc noqueue state UP group default qlen 1000
    link/ether 26:3a:ad:39💿6c brd ff:ff:ff:ff:ff:ff
    inet 10.32.0.3/12 brd 10.47.255.255 scope global weave
    valid_lft forever preferred_lft forever
    inet6 fe80::243a:adff:fe39:cd6c/64 scope link
    valid_lft forever preferred_lft forever

    验证物理机可以ping通weave网络的容器,比如之前的bbox1的ip10.32.0.1

    [root@localhost ~]# ping -c2 10.32.0.1
    PING 10.32.0.1 (10.32.0.1) 56(84) bytes of data.
    64 bytes from 10.32.0.1: icmp_seq=1 ttl=64 time=0.170 ms
    64 bytes from 10.32.0.1: icmp_seq=2 ttl=64 time=0.119 ms

    — 10.32.0.1 ping statistics —
    2 packets transmitted, 2 received, 0% packet loss, time 999ms
    rtt min/avg/max/mdev = 0.119/0.144/0.170/0.028 ms
    这时候主机会多出一条路由条目

    10.32.0.0/12 dev weave proto kernel scope link src 10.32.0.3

    表示外部访问10.32.0.0/12网段中的地址时,由weave网卡10.32.0.3作为网关来转发

    [root@localhost ~]# ip r
    default via 192.168.1.3 dev ens33 proto static metric 100
    10.32.0.0/12 dev weave proto kernel scope link src 10.32.0.3
    172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
    192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.12 metric 100
    192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
    指定weave网络的网段地址
    启动服务后,默认会使用10.32.0.0/12地址段的所有网络,如果想去自定义网段,请执行weave launch --ipalloc-range x.x.x.x/xx即可

    展开全文
  • Docker网络Weave.zip

    2019-07-19 08:58:44
    Weave 创建一个虚拟网络并连接到部署在多个主机上的 Docker 容器。应用程序使用该网络就好像它们是插在同一个网络交换机上,无需任何配置和端口映射。容器内的服务可直接为容器外的应用所访问,而不需要关心容器运行...
  • Weave Cloud-crx插件

    2021-04-02 03:08:01
    语言:English (United States) 将链接添加到Grafana图形面板以开始在Weave Cloud中探索这些图形查询。
  • weave 的 FAQ

    2020-06-16 17:57:25
    Weave网络使用很多,下面是一些文档供参考: 1:https://www.weave.works/docs/net/latest/faq/ 2.https://www.weave.works/docs/net/latest/troubleshooting/
  • Openshift安装weave

    2019-10-16 14:52:31
    weave安装 https://www.weave.works/docs/scope/latest/installing/#k8s oc new-project weave #Scope probe pods need full access to Kubernetes API via ‘weave-scope’ service account oc adm policy add-...
  • Habit @ weave是用于控制和监视智能家居和可穿戴设备的Web应用程序。 功耗图和计划动作的能力可以帮助用户做出正确的决定,以便在家中高效节能,而卡路里消耗和睡眠质量图则可能有助于采用改善健康的习惯。 用户可以...
  • 在2015年的GoogleI/O大会上,负责Android业务的桑达.皮查伊(SundarPichai)宣布了Google最新的物联网战略。这包括一个基于Android裁剪过的...Google把Weave定位为物联网的一个通信层,但本质上,Weave应该属于物联网系
  • Atom支持Weave.jl和Pweave 和文档的Atom语法突出显示。 提供以下模式: Weave.jl: markdown .jmd,.mdw和.jmdw的markdown(使用noweb的markdown) Weave.jl: LaTex用于texw,.jtexw和.jnw。 Weave.jl: ...
  • docker_weave

    2018-09-20 21:39:00
    curl -L git.io/weave -o /usr/local/bin/weave chmod a+x /usr/local/bin/weave 启动 weave weave launch 生成的三个容器一个是运行服务的容器,其他的两个是数据库服务,和存储服务 查看你weava配置 driver 为 ...
  • <div><p>This is the official way to install Weave Net as shown at https://www.weave.works/docs/net/latest/kubernetes/kube-addon/#install.</p><p>该提问来源于开源项目:kubernetes-retired/kubeadm-...
  • Sage-weave提供了一个用于混合文本和代码以自动生成文档的框架,类似于R语言的 。 Sage-weave允许您创建一个包含LaTeX文本和Sage代码的单个源文件。 然后将它们“编织”到最终的LaTeX文档中,该文档包含原始文本...
  • Helm安装weave scope

    2021-08-23 12:06:07
    Helm安装weave scopeWeave Scope添加chart仓库修改values.yaml安装weave scope验证安装访问测试 Weave Scope Weave Scope 是 Docker 和 Kubernetes 的可视化和监控工具。 它为您的应用程序以及整个基础架构提供了...
  • Weave Scope安装

    千次阅读 2018-06-06 23:31:24
    Weave Scope安装 首先确保已经安装docker 实时了解Docker容器状态 查看容器基础设施的概况,或者专注于一个特殊的微服务。从而轻松发现并纠正问题,确保你的容器化应用的稳定与性能。 内部细节与深度链接 ...
  • 目前实现Docker网络的开源方案有Weave、Kubernetes、Flannel、Pipework以及SocketPlane等,其中Weave被评价为目前最靠谱的,那么这里就对Weave的基本原理及使用方法做个总结。 简介 Weave是由Zett.io公司开发的,它...
  • Weave是基于Offsider技术的可导航对象数据库。 将数据和/或功能存储为数据库上的事件。 定义事件之间的导航路径。 数据库和事件响应对象消息。 包含cgi界面。
  • PCB Dielectric Material Selection and Fiber Weave Effect on High-Speed Channel Routing
  • Docker Weave 命令整理

    2018-11-03 15:02:00
    Docker Weave 命令整理 # 查看weave状态 weave status # 查看状态详情 weave status connections # 查看weave相互之间节点建立的关系 weave status peers # 查看当前分配的容器 weave...
  • 一、weave网络插件的默认网段 10.32.0.0/12 二、如何查看weave的启动参数 三、如何安装weave命令 1、下载weave的二进制文件: (1)首先: ​​​​​​0.80版本: #wget -O /usr/local/bin/weave ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,462
精华内容 4,184
关键字:

Weave