跨主机网络-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

    [[email protected] ~]# 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
        查看当前网络:
        [[email protected] ~]# 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 的详细信息:
        [[email protected] ~]# 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/24。

6.运行一个 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

原文地址:https://www.cnblogs.com/hanxiaohui/p/8611370.html

时间: 2024-08-29 13:34:51

跨主机网络-overlay(18)的相关文章

Docker网络之部署跨主机网络overlay

dcoker网络: none网络:什么都没有的网络.它的是使用常见:封闭空间意味着隔离,安全,比如生成随机码.host网络:网络配置与dockerhost完全相同.应用场景:性能好,但是没有灵活性,容易出现端口冲突问题.brigde网络: 默认的网络驱动默认,用以实现主机网络接口与虚拟网络接口间的通信. 部署网络的基本操作命令: //查看docker服务器中的网络:[[email protected] ~]# docker network ls//查看桥接网络:[[email protected

centos7下安装docker(14.2跨主机网络-overlay)

为支持容器跨主机通信,Docker提供了overlay driver,使用户可以创建基于VxLAN的overlay网络.VxLAN可将二层数据封装到UDP进行传输,VxLAN提供与VLAN相同的以太网二层服务,但是拥有更强的扩展性和灵活性. Docker overlay网络需要一个key-value数据库用于保存网络信息状态,包括Network,Endpoint,IP等.Consul,Etcd和Zookeeper都是docker支持的key-value软件,今天讨论的是consul 试验环境描述

docker的跨主机网络Overlay,MacVlan网络的实现

让外网能否访问容器的端口映射方法: 1.手动指定端口映射关系 两台虚拟机,第一台映射端口(第二台访问宿主机端口,就是访问容器端口 curl 192.168.1.1:90 .)docker run -itd --name web1 -p 90:80 nginx:latest 2>从宿主机随机映射端口到容器,docker run -itd --name web2 -p 80 nginx:latest 3>从宿主机随机映射端口到容器,容器内所有暴漏端口,都会一一映射.docker run -itd

跨主机网络概述 - 每天5分钟玩转 Docker 容器技术(48)

前面已经学习了 Docker 的几种网络方案:none.host.bridge 和 joined 容器,它们解决了单个 Docker Host 内容器通信的问题.本章的重点则是讨论跨主机容器间通信的方案. 跨主机网络方案包括: docker 原生的 overlay 和 macvlan. 第三方方案:常用的包括 flannel.weave 和 calico. docker 网络是一个非常活跃的技术领域,不断有新的方案开发出来,那么要问个非常重要的问题了: 如此众多的方案是如何与 docker 集成

Docker 跨主机网络(十六)

一.跨主机网络概述 前面已经学习了 Docker 的几种网络方案:none.host.bridge 和 joined 容器,它们解决了单个 Docker Host 内容器通信的问题.本章的重点则是讨论跨主机容器间通信的方案. docker 原生的 overlay 和 macvlan.第三方方案:常用的包括 flannel.weave 和 calico. 二.准备 overlay 环境 为支持容器跨主机通信,Docker 提供了 overlay driver.Docerk overlay 网络需要

[Kubernetes][Kubernetes容器网络2]深入解析容器跨主机网络

目录 深入解析容器跨主机网络 Flannel Flannel UDP模式基本原理 UDP模式的缺陷 Flannel VXLAN 模式 深入解析容器跨主机网络 在Docker默认配置下,不同宿主机上的容器通过IP地址是无法相互通信的. 因此社区出现了很多用于解决容器跨主机通信问题的方案. Flannel Flannel 支持三种后端实现: VXLAN host-gw UDP 先以 UDP 模式为例 Flannel UDP模式基本原理 假设有两台宿主机: Node1: container-1,IP

centos7下安装docker(15.3跨主机网络-macvlan)

除了ovrlay,docker还开发了另一个支持跨主机容器的driver:macvlan macvlan本身是linu kernel模块,其功能是允许在同一物理网卡上配置多了MAC地址,即:多个interface,每个interface可以配置自己的ip.macvlan本身是一种网卡虚拟化技术,Docker用macvlan实现容器网络就不奇怪了 macvlan最大的优点是性能极好,相比其他方案,macvlan不需要创建Linux bridge,而是直接通过以太interface连接到物理网络.

Docker 跨主机网络方案分析

overlay 俗称隧道网络,它是基于 VxLAN 协议来将二层数据包封装到 UDP 中进行传输的,目的是扩展二层网段,因为 VLAN 使用 12bit 标记 VLAN ID,最多支持 4094 个 VLAN,这对于大型云网络会成为瓶颈,而 VxLAN ID 使用 24bit 来标记,支持多达 16777216 个二层网段,所以 VxLAN 是扩展了 VLAN,也叫做大二层网络. overlay 网络需要一个全局的“上帝”来记录它网络中的信息,比如主机地址,子网等,这个上帝在 Docker 中是

centos7下安装docker(15.6docker跨主机网络---Weave)

Weave是weaveworks开发的容器网络解决方案.weave创建的虚拟网络可以将部署在多个主机上的容器连接起来.对于容器来说,weave就像一个巨大的网络交换机,容器可以直接通信,无需NAT和端口映射.除此之外,weave的DNS模块是容器可以通过hostname访问 weave不依赖分布式数据库(例如:consul和etcd)交换网络信息,每个主机上只需要运行weave组件就能建立起跨主机容器网络,weave网络能够穿透防火墙并运行在部分连接的网络上,weave支持加密网络接连,用户可以