首页 > 其他分享 >容器化-Docker集群

容器化-Docker集群

时间:2023-11-07 09:23:44浏览次数:46  
标签:容器 service ---- swarm 集群 Docker docker

笔记
课程专题:微服务容器化
四、容器化-Docker集群
1、Docker集群理解

docker集群:多个docker实例组成的集合

1、保证docker高可用

2、解决项目高性能和高可用

docker集群搭建前提

docker集群内部概念

1、worker 工作者 运行项目

2、manager 管理者 管理其他docker实例。安排项目到哪个worker运行

docker集群内部关系

manager 和 worker

一对多关系

3个docker

只有一个manager 。2个worker

2、Docker集群搭建

swarm

1、创建docker manager 角色

2、创建docker worker角色

条件

1、准备2台虚拟机

2、每台虚拟机安装docker

3、再使用swarm

1、先创建manager 角色 192.168.142.129

2、然后创建worker角色

注意:关闭防火墙

3、Docker node

node:节点。管理集群

前提:必须在manager 节点上才能使用

node:就是用来管理节点。

4、Docker service

目标:docker 集群运行webapi镜像

docker run

docker service

1、先确认service在哪里

2、然后再使用service运行镜像

docker service create webapi

运行流程:

1、创建service :管理容器

2、创建task(线程):调度任务

3、分配哪一个docker运行镜像。得到容器

docker run webapi(调度去完成)

strange_ellis--->strange_ellis.1------>strange_ellis.1.pktse7sdtfocw1k1glb3ktbpv

service ---->容器关系

一对多关系:一个service可以管理多个容器

service访问

访问流程

客户端---->Linux---->Docker---->Service----->容器---->项目

9099 ------> 80 80 80

service运行项目集群(扩容)

scale

客户端---->Linux---->Docker---->Service----->容器---->项目

容器---->项目

容器---->项目

容器---->项目

1、轮询算法

2、最小活跃数算法(默认)

service作用:

1、运行镜像

2、管理容器

3、负载均衡

service运行webapi

service运行ydtnginx


5、Docker stack

service :只能做到镜像一个一个运行。

需求:批量运行镜像

service编排。批量创建service

核心:stack

deploy 命令

1、docker-compose.yml

json

docker客户端--->docker 服务器

1、先准备docker-compose.yml

2、然后配置docker-compose.yml

3、运行docker-compose.yml

stack:

1、deploy 命令

2、docker-compose.yml

应用:

1、微服务部署

2、多租户部署

6、Docker config

service之间通信

webapi

客户端---->Linux---->Docker---->Service----->容器---->项目

容器---->项目

容器---->项目

容器---->项目

nginx

客户端---->Linux---->Docker---->Service----->容器---->项目

容器---->项目

容器---->项目

容器---->项目

通信前提

1、service名称通信

docker-compose.yml文件

ydtnginx webapi

2、config。集群配置

只需要配置一次,整个集群可以使用

原理:主节点创建,同步到其他节点。

实现service之间通信。

目标:实现nginx和webapi之间通信

1、先创建nginx.conf

2、配置nginx.conf配置文件

3、使用config实现集群配置

1、先创建config

2、使用config

/usr/local/nginx/conf/nginx.conf

4、最后使用stack运行

docker 集群搭建,出现了网络问题。

1、无法使用名称通信

2、只能主节点访问,工作节点不能访问

 

下节课

使用k8s。

1、如果master节点宕机,可以使用吗?
答案:可以使用。集群节点之间选举

2、只能用主节点访问,这样有什么好处吗?
答案:所有节点都能访问。才合理。

3、docker service在manager节点、worker节点都可以运行?
答案:service只能在manager节点。容器可以运行在manager 和 worker节点

4、复制集是什么?为什么要用复制集?
答案:多个相同的实例。

5、如果是winform项目或者是WPF项目的话和这个webapi项目的操作过程是一样的吗?
答案:没有任何区别。

6、所以总的层次是:客户端->linux->docker->stack->service->容器->服务实例 吗?
答案:客户端->linux->docker->service->容器->服务实例 吗?

7、之前安装虚拟机机,内存需要16G?
答案:虚拟机内存大一点好一些

8、复制集 和 集群 有本质区别吗?
答案:复制集是集群的特例。实例作用完全一样

集群

1、实例作用完全一样

2、实例作用不一样

9、docker里有没有用其他操作系统的?
docker 容器里面。默认使用的Linux 乌班图。ubantu

apt yum
docker-集群
什么是docker集群
什么是集群
1、先生活中集群

2、再软件中集群

3、最后总结

总结:不同服务实例,来共同提供服务的一组集合就是集群

集群类型
1、先看两个集群例子:nginx集群,redis集群

2、然后总结

1、对称集群

​ 不同服务实例,功能地位相等(每一个实例提供的功能机会相同)

​ 定位:数据计算

2、非对称集群

​ 不同服务实例,功能地位不相等(每一个实例提供功能的机会不相同)

​ 定位:数据存储

什么是docker集群
接下来,考一下大家,大家认为docker集群是个什么集群

总结

1、docker集群是非对称集群

​ 见图进行解析

为什么要使用docker集群
​ 从docker集群图来进行分析,docker里面运行着容器,如果docker宕机?

docker容器对外提供 访问,如果访问量越大,一台docker的并发量毕竟有限

总结:

​ 1、单点故障问题

​ 2、性能问题

所以为了解决这两个问题,就出现了docker集群

实现docker集群方式
​ 1、swarm

​ 2、k8s

​ 但是我们今天只会讲解swarm,今天我们选择swarm

选择原因

1、swarm是docker官方提供的集群工具

2、k8s是谷歌开发的

3、k8s理解使用起来比较难

swarm如何管理docker集群
swarm是什么,怎么理解?
swarm 就好比是地铁购票机安装员。同理swarm就是地铁购票机安装员

Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。

swarm内部概念
1、node节点概念

2、task概念 — 后面再引入

3、service概念 — 后面再引入

4、stack概念 — 后面再引入

就是将集群的docker通过node分配角色的方式进行维护

node 就是docker的别名,就好比,我们去公司上班,每一个人都有一个工号,工号就是我们的别名,那么node就是docker的别名,但是node有两个类型,manager 和work,就是讲docker分成了两类,就好比,公司里面有老板和员工,manager就是老板,work就是员工,老板是管理的,员工是干事的。有时候人工不够的时候,老板也过来干事。

1、node :docker主机

2、管理节点(manager)

​ 管理docker集群

​ 1、集群配置

​ 2、容器服务管理。

​ 3、负载均衡

​ 4、集群管理?

3、工作节点 (worker)

​ 1、提供容器服务

swarm是如何操作集群节点容器的?===目前先不讲
在使用之前我们必须要准备一些概念,这些概念是swarm的核心,掌握了这些概念,就已经理解了swarm 50%

后面都是基于这些概念的操作

service是什么?

​ 是指不同节点容器集合,用来维护容器

task是什么?

​ 在集群环境中,用来运行容器

stack是什么?

​ 是指stack的集合,用来维护service

swarm如何创建docker集群
条件

1、两台以上docker主机

2、docker swarm

步骤

1、安装两台docker主机,使用linux或者centos7.0以上

​ 安装1.12 版本以上的docker,会在主机上默认提供支持

2、如何使用docker swarm?

​ 1、输出docker命令,会看到有一个swarm管理命令

​ docker swarm

​ 2、然后输入docker swarm 命令

​ 可以看到很多的帮助命令

​ 3、创建集群管理节点

​ docker swarm init –advertise-addr 192.168.44.4

​ 4、创建工作节点

​ docker swarm join –token SWMTKN-1-2bomg3tb4cs8f5g7oqrw34k1mql9i0tr2msn8leqyphgac5hct-db4iwy32sdr6m0bmqyhi47jyn 123.57.164.54:2377

​ 5、查看集群消息,查看工作节点和管理节点

​ docker info

docker swarm运行商品微服务镜像
​ 条件

​ 1、productservice_micro镜像

​ 2、docker service

​ 步骤

​ 1、查看productservice_micro镜像

​ 输入命令:docker images

​ ![image-20220717162852586](D:\work\net-project\微服务专题\29、微服务部署-Docker(三)-应用\assets\image-20220717162852586.png)

2、如何使用docker service?

​ 2.1、输出docker命令,会看到有一个service管理命令

​ docker service

​ 2.2、然后输入docker service命令

​ 如图所示:

​ ![image-20220717163121561](D:\work\net-project\微服务专题\29、微服务部署-Docker(三)-应用\assets\image-20220717163121561.png)

​ 2.3、创建服务

​ docker service create –replicas 1 – name productservice_service productservice_micro

​ –replicas 配置服务副本(容器在不同节点启动)

​ –name 服务名称

​ 3.1 暴露服务(修改服务)

​ docker service update –publish-add 6066:80 productservice_service

​ 2.4、列表服务

​ docker service ls

​ 2.5、查看服务运行在哪个节点

​ docker service ps productservice_service

​ 2.6、查看服务部署详细信息

​ docker service inspect –pretty productservice_service

​ 2.7、服务动态伸缩(向其他节点添加服务副本)

​ docker service scale productservice_service=2

​ 2.8、删除服务

​ docker service rm productservice_service

​ 2.9、服务如何进行外部访问

​ docker service create –replicas 1 – name –publish 6066:80 productservice_service

​ –publish 发布端口例如 6066:80

​ 2.10、进行网络访问

​ 192.168.44.4:6066

​ 192.168.44.6:8088

docker swarm运行Nginx镜像
​ 条件

​ 1、ydtnginx镜像

​ 2、docker service

​ 步骤

​ 1、查看ydtnginx镜像

​ 输入命令:docker images

![image-20220717163714982](D:\work\net-project\微服务专题\29、微服务部署-Docker(三)-应用\assets\image-20220717163714982.png)

2、如何使用docker service?

​ 2.1、输出docker命令,会看到有一个service管理命令

​ docker service

​ 2.2、然后输入docker service命令

​ 如图所示:

​ ![image-20220717163121561](D:\work\net-project\微服务专题\29、微服务部署-Docker(三)-应用\assets\image-20220717163121561.png)

​ 2.3、创建服务

​ docker service create –replicas 1 – name ydtnginx_service ydtnginx

​ –replicas 配置服务副本(容器在不同节点启动)

​ –name 服务名称

​ 3.1 暴露服务(修改服务)

​ docker service update –publish-add 8088:80 ydtnginx_service

​ 2.4、列表服务

​ docker service ls

​ 2.5、查看服务运行在哪个节点

​ docker service ps ydtnginx_service

​ 2.6、查看服务部署详细信息

​ docker service inspect –pretty ydtnginx_service

​ 2.7、服务动态伸缩(向其他节点添加服务副本)

​ docker service scale ydtnginx_service=2

​ 2.8、删除服务

​ docker service rm ydtnginx_service

​ 2.9、服务如何进行外部访问

​ docker service create –replicas 1 – name –publish 6066:80 ydtnginx_service

​ –publish 发布端口例如 8088:80

​ 2.10、进行网络访问

​ 192.168.44.4:6066

​ 192.168.44.6:8088

docker swarm批量运行(商品微服务镜像/Nginx镜像)
条件

​ 1、商品微服务镜像

​ 2、Nginx镜像

​ 3、docker-compose.yml

​ 4、stack

1、查看rmcore镜像和nginx镜像

​ 使用rmcore镜像来进行集群服务部署

2、如何使用docker stack?

​ 1、输出docker命令,会看到有一个service管理命令

​ docker stack

​ 2、然后输入docker stack命令

​ 有很多的帮助命令

​ 3、创建堆栈(服务集合)

​ 1、创建一个stack目录(在当前目录/root下创建一个stack)

​ mkdir stack

​ 2、配置yml文件

​ 在原有docker.compose.yml增加配置

​ version: ‘3.4’

​ deploy: #集群模式配置
​ mode:

​ replicated #配置副本模式,gloab
​ replicas: 2 # 副本份数

​ 3、创建stack

​ docker stack deploy -c docker-compose.yml rmstack

​ -c 是指定docker-compose.yml文件

​ rmcorestack 指定stack 标识(名称)

​ 4、查看stack列表

​ docker stack ls

​ 5、查看stack 服务列表信息

​ docker stack ps rmstack

​ 或者 docker service ls

​ 5、删除stack

​ docker stack rm rmstack

​ 通过两个节点查看,所有的信息是否删除

version: '3.7'
services:
  ydtnginx:
    image: ydtnginx
    ports:
     - 8088:80
    deploy:
      mode:
       replicated
      replicas: 2
  productservice:
    image: productservice_micro
    ports:
     - 8090:80
    deploy:
      mode:
       replicated
      replicas: 2
​ 6、进行网络访问

​ 192.168.44.4:6066

​ 192.168.44.6:6066

docker swarm service之间通信
条件

1、configs

2、docker-compose.yml

步骤

1、修改配置

version: '3.7'
services:
  ydtnginx:
    image: ydtnginx
    ports:
     - 8088:80
    deploy:
      mode:
       replicated
      replicas: 2
    configs:
      - source: ydtnginx_config_3
        target: /usr/local/nginx/conf/nginx.conf
  productservice:
    image: productservice_micro
    ports:
     - 8090:80
    deploy:
      mode:
       replicated
      replicas: 2
configs:
  ydtnginx_config_3:
    file: /root/ydt/compose/nginx.conf
2、运行stack

docker stack deploy -c docker-compose.yml ydtmicroservice

docker swarm config实战
1、创建config

[root@tony02 ydt]# docker config create conf default.conf 
je21ykql9tzebr0j2v7ep0kat
12
2、查看config

[root@tony02 ydt]# docker config ls
ID                          NAME                CREATED             UPDATED
je21ykql9tzebr0j2v7ep0kat   conf                5 minutes ago       5 minutes ago
3、使用config

在conf配置中,将nginx的监听端口改成了88,替换掉nginx中的默认80端口的配置文件,创建service时,将容器内部端口88端口映射成主机上90端口
[root@tony02 ydt]# service create --replicas 1 --name ydtnginx_nginx --publish 6066:80 --config source=ydtnginx_config,target=/usr/local/nginx/conf/nginx.conf ydtnginx
pocy3ph88gy7ng9g2lbq9jvnw
overall progress: 1 out of 1 tasks 
1/1: running   [==================================================>] 
verify: Service converged 

 

标签:容器,service,----,swarm,集群,Docker,docker
From: https://www.cnblogs.com/tanxwuwang/p/17814277.html

相关文章

  • Redis集群之主从模式
    搭建主从架构单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。假设有A、B两个Redis实例,如何让B作为A的slave节点?●在B节点执行命令:slaveofA的IPA的port主从数据同步原理全量同步主从第一次同步是全量同步:master如何判断slave是......
  • Docker下安装nacos
    1、拉取镜像dockerpullnacos/nacos-server2、挂载目录,用于映射到容器,目录按自己的情况创建dockervolumecreatenacos_testmkdir-p/var/lib/docker/volumes/nacos_test/logs/                     #新建logs目录mkdir-p/var/lib/docker/v......
  • CSS让子元素div的高度填满父容器的剩余空间的方法
    原帖:https://pythonjishu.com/unbayyjtzdjeewe/以下是详细讲解CSS让子元素div的高度填满父容器的剩余空间的方法的完整攻略。方法一:FlexboxFlexbox是一种强大的布局方式,使用起来非常方便。可以通过设置父元素的display属性为flex来开启flexbox布局,然后设置子元素的......
  • Docker搭建jenkins环境
    按照习俗,先介绍下jenkins,Jenkins,是一个开源的、提供友好操作界面的持续集成(CI)工具,主要用于持续、自动的构建的一些定时执行的任务。Jenkins用Java语言编写,可在Tomcat等流行的容器中运行,也可独立运行。然后是为什么要使用jenkins:第一Jenkin是免费开源的,且拥有庞大的社区,也就意味着......
  • 华为云云容器引擎CCE产品文档带来4个升级,降低使用难度
    本文分享自华为云社区《华为云云容器引擎CCE产品文档优化升级!》,作者:云容器大未来。云原生产品技术栈庞大,需要用户对容器、Kubernetes等核心技术都有扎实的理解和掌握;同时问题定位和排查也较为困难,需要用户对不同系统模块原理非常熟悉。这些因素导致云原生产品上手门槛高、配置......
  • 部署Docker可视化管理工具docker.ui
    "DockerUI"这个术语在正式的Docker官方文档中并没有明确定义。然而,我们可以将其解释为用户界面(UI),用于管理和监控Docker容器和镜像。通常情况下,Docker的操作是通过命令行界面(CLI)进行的,但也存在一些第三方工具和平台,提供了图形化的用户界面来简化Docker的使用。这些Docke......
  • Docker部署ShowDoc文档工具
    一、ShowDoc介绍1.ShowDoc简介ShowDoc是一个非常适合IT团队的在线API文档、技术文档工具。通过showdoc,你可以方便地使用markdown语法来书写出美观的API文档、数据字典文档、技术文档、在线excel文档等等。2.ShowDoc功能分享与导出响应式网页设计,可将项目文档分享到电脑或移动设......
  • Docker 配置 Wordpress
    1.拉取镜像dockerpullwordpress:latest2.创建存储卷dockervolumecreatewordpress_data3.创建容器dockerrun--namewordpress-chao--restart=always--linkmysql:mysql-p8011:80-d\-vwordpress_data:/var/www/htmlwordpress----外部数据库docker......
  • Docker安装部署
    传统虚拟机技术虚拟机是虚拟出一套硬件,在其上面运行一个完整的操作系统给,例如我们使用KVM,指定系统镜像,然后装系统,最终可以使用,在该系统上再运行所需的应用程序。KVM创建虚拟机是,指定较少的cpu,内存,硬盘等资源,虚拟机性能较低。容器技术容器内的应用程序直接运行再宿主机的内......
  • docker 搭建 rocketmq 本地环境
    如果你还没有安装Docker,请先安装。可以参考官方文档docs.docker.com/install/进行安装NameServernameserver就类似kafka集群中使用的zookeeper负责集群的管理注册和发现。1.拉取镜像dockerpullapache/rocketmq2.创建NameServer容器创建一个新的容器并指定RocketMQ的镜......