• 跨主机网络-overlay(18)


    docker overlay跨主机网络
    
    1.环境
    
        docker版本
        Docker version 18.02.0-ce, build fc4de44
    
        3台主机
        192.168.55.51  host1
        192.168.55.52  host2
        192.168.55.53  host2
    
    2.部署Consul
    
        Docerk overlay 网络需要一个 key-value 数据库用于保存网络状态信息,包括 Network、Endpoint、IP 等。Consul、Etcd 和 ZooKeeper 都是 Docker 支持的 key-vlaue 软件,我们这里使用 Consul。
        在 docker 主机 host1 上部署支持的组件,比如 Consul
        docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap
    
        容器启动后,可以通过 http://192.168.55.51:8500 访问 Consul。
    
        
    
    3.修改docker启动项并重启docker(3台上操作)
        #修改docker daemon 的配置文件/etc/systemd/system/docker.service
    
        [root@host1 ~]# cat /etc/systemd/system/docker.service.d/10-machine.conf 
        [Service]
        ExecStart=
        ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --storage-driver devicemapper --tlsverify --tlscacert /etc/docker/ca.pem --tlscert /etc/docker/server.pem --tlskey /etc/docker/server-key.pem --label provider=generic --registry-mirror http://db411c61.m.daocloud.io --cluster-store=consul://192.168.55.51:8500 --cluster-advertise=192.168.55.51:2376
        Environment=
    
    
        #配置说明
        --cluster-store 指定 consul 的地址。
        --cluster-advertise 告知 consul 自己的连接地址。(即docker的连接,2376为docker的端口)
    
        #重启docker
        systemctl daemon-reload
        systemctl restart docker
    
    4.查看host1 和 host2、host3 将自动注册到 Consul 数据库中
        访问http://192.168.55.51:8500
        查看key/value==docker==nodes/   (可以看到3台主全部注册上来了)
    
    5.在 host1 中创建 overlay 网络 ov_net1
        docker network create -d overlay ov_net1
            -d overlay 指定 driver 为 overaly。
        docker network ls 
            查看当前网络:
            [root@host1 ~]# docker network ls
            NETWORK ID          NAME                DRIVER              SCOPE
            8925d1ce67ad        bridge              bridge              local
            0fb41307416f        host                host                local
            fc3f61663c71        none                null                local
            cb5cce10b030        ov_net1             overlay             global
            注意到 ov_net1 的 SCOPE 为 global,而其他网络为 local。在 host2 上查看存在的网络:
            host2 上也能看到 ov_net1。这是因为创建 ov_net1 时 host1 将 overlay 网络信息存入了 consul,host2 从 consul 读取到了新网络的数据。之后 ov_net 的任何变化都会同步到 host1 和 host2、host3。
    
        docker network inspect ov_net1
            查看 ov_net1 的详细信息:
            [root@host1 ~]# docker network inspect ov_net1
            [
                {
                    "Name": "ov_net1",
                    "Id": "cb5cce10b0301720ded000830038183c9752448a77c4010f6d1e194923bf1ef7",
                    "Created": "2018-03-20T15:43:52.509618103+08:00",
                    "Scope": "global",
                    "Driver": "overlay",
                    "EnableIPv6": false,
                    "IPAM": {
                        "Driver": "default",
                        "Options": {},
                        "Config": [
                            {
                                "Subnet": "10.0.0.0/24",
                                "Gateway": "10.0.0.1"
                            }
                        ]
                    },
                    "Internal": false,
                    "Attachable": false,
                    "Ingress": false,
                    "ConfigFrom": {
                        "Network": ""
                    },
                    "ConfigOnly": false,
                    "Containers": {},
                    "Options": {},
                    "Labels": {}
                }
            ]
    
            IPAM 是指 IP Address Management,docker 自动为 ov_net1 分配的 IP 空间为 10.0.0.0/246.运行一个 busybox 容器并连接到 ov_net1
        host1
            docker run -tid --name bbox1 --network ov_net1 busybox
    
            #查看容器的网络配置:
            docker exec bbox1 ip r
        host2
            docker run -tid --name bbox2 --network ov_net1 busybox
    
            #查看容器的网络配置:
            docker exec bbox2 ip r
    
    
        #查看网络互通
        host1上查看
        docker exec bbox1 ping -c 3 bbox2
  • 相关阅读:
    HTML
    汉企,新的起点
    表格标签
    常用标签
    HTML
    我的未来规划
    世界首富如何炼成? 看盖茨20条箴言
    获取Java项目根目录 N多方法(转载)
    进程间通信——管道
    necessitas
  • 原文地址:https://www.cnblogs.com/hanxiaohui/p/8611370.html
Copyright © 2020-2023  润新知