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 服务上端口:路由网格上的端口