8、容器的跨主机访问

1、容器的跨主机访问主要方式
    使用网桥实现跨主机容器连接
    使用Open vSwitch实现跨主机容器连接
    使用weave实现夸主机容器连接

2、使用网桥实现跨主机容器连接
    网络拓扑


    环境准备
    IP HOST
    HOST1: 10.211.55.3
    HOST2: 10.211.55.4

    步骤
        2.1、在第一台主机上编辑/etc/network/interfaces
            auto br0
            iface br0 inet static
            address 10.211.55.3
            netmask 255.255..255.0
            gateway 10.211.55.1
            bridge_posts eth0
            保存重启主机以使配置生效

        2.2、在第一台机器修改docker配置文件
            vim /etc/default/docker
            -b 指定使用自定义网桥
                -b br0
            -fixed-cidr 限制ip地址分配范围
                IP地址划分:
                HOST1: 10.211.55.64/26
                    地址范围: 10.211.55.65~10.211.55.126
                HOST2:10.211.55.128/26
                    地址范围: 10.211.55.129~10.211.55.190
            在DOCKER_OPTS加入 -b br0 --fixed-cidr 0.211.55.64/26
            保存重启docker

        2.3、在第二台主机上重复1、2操作
            主要第二台的--fixed-cidr的网段和第一台主机的网段不同

        2.4、测试
            分别在两台主机上启动docker容器测试访问连接

        2.5、容器使用网桥跨主机访问的优缺点
            优点
                配置简单,不依赖第三方软件
            缺点
                与主机在同网段,需要小心划分地址
                需要有网段控制权,在生产环境中不易实现
                不容易管理
                兼容性不佳

3、使用Open vSwitch实现跨主机容器连接


4、使用weave实现和跨主机容器连接
    4.1、下载weave
        wget -O /usr/bin/weave https://raw.githubusercontent.com/zettio/weave/master/weave

    4.2、赋予weave可执行权限
        chmod a+x /usr/bin/weave

    4.3、启动weave路由器
        weave launch
        注意:启动weave路由器,这个路由器其实也是以容器的形式运行的。(前提是已经启动了docker服务进程)可以使用docker ps 查看已经运行了名为weave 的容器了

    4.4、查看镜像,可以发现上面下载的weave路由容器镜像
        docker images

        weaveworks/weaveexec   latest              b97d7728de92        2 weeks ago         87.4MB
        weaveworks/weave       latest              86be55495cf0        2 weeks ago         69.8MB
        weaveworks/weavedb     latest              b5c2d24a7b71        4 weeks ago         282B

    4.5、此时会发现有两个网桥,一个是Docker默认生成的,另一个是Weave生成的。(#yum安装bridge-utils工具后,就会出现brctl命令    )
        brctl show

        bridge name     bridge id               STP enabled     interfaces
        docker0         8000.024221279713       no              veth87270fe
        weave           8000.c673cc1045d9       no              vethwe-bridge

    4.6、查看运行的容器,发现weave路由容器已经自动运行
        docker ps

        CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS               NAMES
        7b92630ad7fa        weaveworks/weave:latest   "/home/weave/weaver …"   2 days ago          Up 2 days                               weave

    4.7、weave关闭
        docker stop weave
        docker rm weave

    4.8、weave命令帮助
        weave --help

    4.9、weave跨主机访问实战
        4.9.1、机器环境准备
            node1    10.10.172.201
            node2    10.10.172.202

            node1宿主机上的应用容器my-test1: 192.168.0.2/24
            node2宿主机上的应用容器my-test2: 192.168.0.3/24

            两台机上均安装Docker及Weave,并均启动好Weave路由容器(安装及启动操作如上)。最好关闭两台机器的防火墙!(如果打开防火墙,需要开放6783端口)

        4.9.2、在两台机上均启动一个应用容器,有以下两种方式:
            
            第一种方式:可以直接使用weave run命令
                [root@node1 ~]# 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版本之后就没有“weave run”这个命令了,所以还是使用下面的第二种方式
 
            第二种方式:先使用docker run启动好容器,然后使用weave attach命令给容器绑定IP地址

                在node1上执行如下命令
                首先创建一个名为my-test1的容器
                    docker run -itd --name=my-test1 docker.io/centos /bin/bash
                使用weave为创建的容器帮定一个地址
                        weave attach 192.168.0.2/24 my-test1     #使用容器名称或容器id都可以    
                进入my-test1容器中使用ifconfig命令可以看到ethwe网桥信息

                同样在node2上机器创建名为my-test2的容器并帮定地址192.168.0.3/24,创建方式同上

             温馨提示:
                上面在docker run启动容器时,可以添加--net=none参数,这个表示容器启动后不    使用默认的虚拟网卡docker0自动分配的ip,而是使用weave绑定的ip;当然也可以选择不添加这个参数去启动容器,这样,容器启动后就会有两个网卡,即两个ip:一个是docker0自动分配的ip,这个适用于同主机内的容器间通信,即同主机的容器使用docker0分配的ip可以相互通信;另一个就是weave网桥绑定的ip。

            容器互联:
                默认情况下,上面在node1和node2两台宿主机上创建的2个容器间都是相互ping不通的。需要使用weave connect命令在两台weave的路由器之间建立连接。
                在node1上执行weave connect命令连接node2上的weave
                    weave connect 10.10.172.202
                在node2上执行weave connect命令连接node1上的weave
                    weave connect 10.10.172.201
                注意可以使用weave forget ip断开相应的连接
                然后就会发现,此时位于两台不同主机上的相同子网段内的容器之间可以相互ping通了
                进入容器my-test1中是使用ping 192.168.0.3查看连接情况
                进入容器my-test2中是使用ping 192.168.0.2查看连接情况

            weave 的更详细的使用介绍请看如下的第一条链接


参考资料
https://cloud.tencent.com/info/db29d62422e7075188bcb9b67ef9b25c.html
https://blog.csdn.net/u010391029/article/details/71727129

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值