docker overlay网络驱动程序

overlay网络驱动程序在多个docke程序主机之间创建分布式网络,允许连接到网络的容器之间的安全的通信。

初始化swarm或者docker主机加入swarm集群时,会在该docker主机上创建两个新网络:

    1. 覆盖网络ingress ,处理与集群服务相关的控制和数据流量(集群中的负载均衡中有使用到),创建服务时,如果没有指定连接用户定义的覆盖网络时,默认使用ingree网络

    2.一个名为桥接网络 docker_gwbridge,将多个docker守护程序连接到stram的其他守护进程。

创建覆盖网络及先决条件

    1.打开用于集群管理通信的tcp端口2377

    2.集群节点之间的通信端口:tcp和udp端口7946

    3.udp端口4789用于覆盖网络流量

加密覆网络上的流量

    --opt encrypted在创建覆盖网络时添加的选项,但是会造成较大的性能损失。启用覆盖加密后,Docker会在所有节点之间创建IPSEC隧道,在这些节点上为连接到覆盖网络的服务安排任务。

        这些隧道还在GCM模式下使用AES算法,管理器节点每12小时自动旋转密钥

swarm模式覆盖网络和独立容器

要创建可由群集服务或 独立容器用于与在其他Docker守护程序上运行的其他独立容器通信的覆盖网络,请添加--attachable标志:


$ docker network create -d overlay --attachable my-attachable-overlay

自定义覆盖网络ip信息

docker network create \

  --driver overlay \

  --ingress \

  --subnet=10.11.0.0/16 \

  --gateway=10.11.0.2 \

  --opt com.docker.network.driver.mtu=1200 \

  my-ingress

  

  

自定义docker_gwbridge接口

docker_gwbridge是一个虚拟网桥,它将覆盖网络与docker守护程序的物理网络。docker是初始化swarm或者加入swarm时会自动创建它。

在自定义该网桥时docker_gwbridge需要先删除默认的docker_gwbridge

        1.停止docker服务

        2.删除现有的docker_gwbridge

            ip linke set docker_gwbridge down

            ip link del dev docker_gwbridge

        3.启动docker服务

        4.使用docker network create 创建定义的docker_gwbridge网桥

        $ docker network create \

        --subnet 10.11.0.0/16 \

        --opt com.docker.network.bridge.name=docker_gwbridge \

        --opt com.docker.network.bridge.enable_icc=false \

        --opt com.docker.network.bridge.enable_ip_masquerade=true \

        docker_gwbridge

        

        群组服务的操作

        在覆盖网络上发布端口

        将服务上的端口通过覆盖网络的路由网格对外开放

        -p 8080:80  服务上端口:路由网格上的端口