Docker overlay网络_Docker 集群网络

位置:首页>文章>详情   分类: 教程分享 > Linux和Shell教程   阅读(898)   2024-04-13 17:04:38

Docker overlay网络_Docker 集群网络

overlay网络

overlay网络用于连接不同机器上的docker容器,允许不同机器上的容器相互通信,同时支持对消息进行加密,当我们初始化一个swarm或是加入到一个swarm中时,在docker主机上会出现两种网络

overlay网络
overlay网络

称为ingress的overlay网络,用于传递集群服务的控制或是数据消息,若在创建swarm服务时没有指定连接用户自定义的overlay网络,将会加入到默认的ingress网络

名为docker_gwbridge桥接网络会连接swarm中所有独立的docker系统进程

可以使用docker network create创建自定义的overlay网络,容器以及服务可以加入多个网络,只有同一网络中的容器可以相互交换信息,可以将单一容器或是swarm服务连接到overlay网络中,但是两者在overlay网络中的行为会有所不同,接下来会描述两者在overlay网络中的共同行为以及不同行为

两者在overlay网络中的公共操作

注意事项:
如果想要连接到overlay网络,请确保连接前下列端口没有服务,并且服务器防火墙要允许下列端口通过:

  • TCP端口2377,用于集群管理信息的交流
  • TCP、UDP端口7946用于集群中节点的交流
  • UDP端口4789用于overlay网络中数据报的发送与接收

无论是否需要使用集群服务,都需要使用docker swarm init初始化本地主机为swarm管理节点或是使用docker swarm join加入现有得swarm

创建自定义overlay网络的方式

 sudo docker network create -d overlay my-overlay

为了创建可以让单一容器、服务相互交流的网络,需要在命令中加入--attachable参数: 同时也可以指定IP地址范围、子网掩码、网关等其他选项

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

在overlay网络中,默认情况下传递的控制信息是加密的,它们使用AES加密算法,每隔12小时交换一次密钥。 可以在创建overlay网络时加上--opt encrypted来加密容器间通信的信息,例如:

sudo docker network create --opt encrypted --driver overlay --attachable my-attachable-multi-host-network

这种加密会带来不可忽视的性能损失,开启后,docker会在所有集群节点之间创建IPSEC通道,使用的加密算法以及密钥交换的周期与控制信息的一致,在windows中,无法提供这种加密服务

17.05或是更高版本的docker容器允许更改ingress网络的配置,如果想要更改ingress网络的配置,首先要移除ingress网络,并在配置后重新创建,如果集群中的服务发布了端口,需要先在集群中移除这个服务,如果没有发布端口,则在ingress网络重新启动前,集群中服务无法进行负载均衡

接下来举一个例子:
1、使用命令docker network inspect ingress确保ingress网络存在,移除所有发布了端口的服务,否则下一步会失败
2、移除ingress网络

sudo docker network rm ingress
-------------------------------------------------
WARNING! Before removing the routing-mesh network, make sure all the nodes
in your swarm run the same docker engine version. Otherwise, removal may not
be effective and functionality of newly created ingress networks will be
impaired.
Are you sure you want to continue? [y/N]

3、使用--ingress参数创建overlay网络,设置必要的配置参数,ingress网络的名称不一定就是ingress,例如下列将其命名为my-ingress

$ sudo 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

4、让第一步中的服务重新连接该网络
docker_gwbridge是一个虚拟网桥,连接docker系统进程所处的物理网络和overlay网络,它存在于docker的内核中,如果我们想配置这个网络,首先需要确保主机不在集群中,接着进行下面的步骤:

停止docker
删除现存的docker_gwbridge接口
$ sudo ip link set docker_gwbridge down
$ sudo ip link del dev docker_gwbridge
重启docker,但是不要加入集群
使用docker network create命令创建docker_gwbridge桥接网络,更多的选项信息请查看: Bridge driver options

$ sudo 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


重新加入集群或是创建集群(集群不存在的前提下)
 

swarm服务在overlay网络的操作

overlay网络中的服务彼此可以使用对方的任意接口,如果外界想要访问服务,则需要使用docker service create或是docker service update指令的-p或是-publish参数发布端口,格式如下:
网络格式

swarm服务默认会使用一个叫做routing mesh的东西,当我们向任何集群节点上已发布的端口发送请求时(无论它是否运行给定的服务),请求将被重定向到运行该服务的容器中,这就是routing mesh的功能,如果不想使用routing mesh,官方提供的方式如下:

默认情况下,控制信息和容器之间的通信信息是在同一个网络中传输的,如果想要使两者不在一个网络上传输,在将服务加入到集群时,需要指定--advertise-addr 以及 --datapath-addr参数

单一容器在overlay网络中的操作

如果创建的ingress网络未指定--attachable参数,则ingress网络只允许服务连接到overlay网络中,想要连接单一容器到overlay网络,就必须在创建overlay网络时添加--attachable参数,并且单一容器并不是暴露所有端口到overlay网络中,需要自己发布:
单一容器overlay网络


 

地址:https://www.leftso.com/article/1065.html

相关阅读

Docker overlay网络_Docker 集群网络overlay网络overlay网络用于连接不同机器上的docker容器,允许不同机器上的容器相互通信,同时支持对消息进行加密,当我们初始...
环境准备docker swarm 集群环境NFS服务资源文件docker-mutil-stack.zip(访问密码: 9987)1.创建overlay网络网络名称:stackMutilNetwo...
Docker swarm 简介Docker swarm 集群,Docker swarm是docker官方提供的一种集群方式,用于小量微服务部署还算不错,比庞大的k8s体系更轻量。节点 运行 Do...
Docker swarm 集群NFS共享目录 NFS 主机安装服务端服务端安装命令如下:sudo apt install nfs-kernel-server -yNFS服务端安装 服务端配置NF...
Docker stack 使用演示案例一环境准备安装好docker swarm(本文以1manager+3worker为例)spring boot demo演示项目通过NFS实现共享目录访问资源...
网络信息 主机1 192.168.79.128主机2 192.168.79.133主机1/2关闭防火墙sudo ufw disable  修改 docker0 ip  sudo vi /lib/...
Docker容器内部访问主机端口服务的几个办法一通过主机局域网ip访问二通过docker0桥接网卡访问三通过配置网络模式为host访问
docker 常用命令整理(持续更新)docker运行容器资源相关 查看所有运行docker的资源消耗情况docker stats 查看指定运行容器资源消耗情况docker stats 容器ID...
docker-compose 部署不支持deploydocker-compose up 启动提示如下:WARNING: Some services (web) use the 'deploy' ...
安装篇国外:curl -fsSL https://get.docker.com | bash国内:curl -fsSL https://get.docker.com | bash -s dock...