Docker Swarm全解析:实现微服务高可用与故障转移的秘密武器

 🐇明明跟你说过:个人主页

🏅个人专栏:《Docker入门到精通》 《k8s入门到实战》🏅

🔖行路有良友,便是天堂🔖

目录

一、基本概念和介绍

1、Docker Swarm 是什么,它与 Docker 的关系

2、Docker Swarm 的架构和工作原理

3、 docker swarm 和k8s的区别

3.1、设计和架构 

3.2、功能和扩展性

 3.3、部署和管理

3.4、社区和生态

二、安装和配置

1、安装 Docker Engine

2、初始化Swarm集群

3、添加节点到Swarm集群

4、网络设置

三、服务管理

1、创建服务

2、扩展服务

3、缩减服务 

 4、删除服务

四、节点管理 

1、查看节点状态

 2、添加新节点

3、从集群中删除节点

 五、网络管理

1、Swarm网络模型

2、创建网络

 3、将服务连接到网络

六、负载均衡和高可用性

1、Swarm如何提供负载均衡和高可用性

2、如何设计服务和网络以实现负载均衡和故障转移


一、基本概念和介绍

1、Docker Swarm 是什么,它与 Docker 的关系

Docker Swarm 是 Docker 官方提供的容器编排和集群管理工具,用于管理多个 Docker 主机上的容器化应用程序。它使得用户可以轻松地创建、部署和管理分布式应用程序,同时提供高可用性、伸缩性和容错性。

与单个 Docker 容器相比,Docker Swarm 可以管理多个 Docker 主机上的容器,有关Docker的详细介绍,请参考Docker的诞生背景与设计初衷这篇文章。

Docker  Swarm具有以下功能与特性:

  1. 容器编排: Docker Swarm 可以根据用户定义的规则和策略,在多个 Docker 主机上自动部署和管理容器,实现容器的自动化编排。
  2. 服务发现: Docker Swarm 提供了内置的服务发现机制,允许容器之间相互通信和发现,无需手动配置 IP 地址或端口映射。
  3. 负载均衡: Docker Swarm 支持负载均衡功能,可以将流量均匀地分配到多个容器实例之间,提高应用程序的性能和可用性。
  4. 伸缩性: Docker Swarm 允许根据实际需求动态地扩展或缩减容器实例的数量,以应对流量的变化和负载的增减。
  5. 容错性: Docker Swarm 提供了容器的高可用性和容错性机制,可以自动重新启动失败的容器实例,并确保应用程序的持续可用性。

Docker Swarm 是 Docker 公司推出的一个独立项目,作为 Docker 生态系统的一部分,与 Docker Engine(Docker 容器运行时)密切相关。通过 Docker Engine API,Docker Swarm 可以与 Docker 主机进行通信和交互,实现容器的管理和编排。

Docker Swarm 是 Docker 公司为了满足容器化应用程序在生产环境中的需求而开发的一个容器编排和集群管理工具,旨在简化容器化应用程序的部署、管理和扩展。

2、Docker Swarm 的架构和工作原理

架构:

  1. Manager 节点: Swarm 集群中的一个或多个节点被指定为 Manager 节点,负责集群的管理和控制。Manager 节点维护集群的状态信息、调度容器、处理用户请求等任务。
  2. Worker 节点: Worker 节点是 Swarm 集群中的工作节点,负责运行容器实例。Worker 节点接收来自 Manager 节点的任务分配,并执行相应的容器操作。
  3. Raft 协议: Swarm 使用 Raft 一致性算法来维护集群的状态一致性。Raft 协议用于选举 Manager 节点的 Leader,并确保 Manager 节点之间的状态信息同步。

工作原理: 

  1. 节点加入: 新的节点可以通过加入 Swarm 集群来成为 Swarm 的一部分。节点加入过程中,Manager 节点将会指派其角色(Manager 或 Worker)并分配相应的任务。
  2. 服务定义: 用户通过定义服务来描述容器化应用程序的架构和配置。服务可以包含容器映像、部署配置、网络配置等信息。
  3. 调度策略: Manager 节点根据用户定义的服务和调度策略,在集群中选择合适的节点来部署容器实例。调度策略可以是全局调度(在所有节点上运行)或约束调度(根据节点的标签或资源限制进行调度)。
  4. 容器编排: Manager 节点负责对容器进行编排和管理,包括创建、启动、停止、重启容器实例等操作。它还负责监控容器的状态,并在需要时进行故障恢复和自动扩展。
  5. 服务发现和负载均衡: Swarm 提供了内置的服务发现和负载均衡机制,允许容器之间相互通信和发现,无需手动配置 IP 地址或端口映射。Swarm 还支持负载均衡,可以将流量均匀地分配到多个容器实例之间。
  6. 自动扩展和容错: Swarm 允许根据实际需求动态地扩展或缩减容器实例的数量,以应对流量的变化和负载的增减。它还提供了容器的高可用性和容错性机制,可以自动重新启动失败的容器实例,并确保应用程序的持续可用性。

3、 docker swarm 和k8s的区别

Docker Swarm 和 Kubernetes(通常简称为 k8s)是两种不同的容器编排平台,它们有一些相似之处,但也有很多不同点。

3.1、设计和架构 

  • Docker Swarm: Docker Swarm 是 Docker 公司提供的官方容器编排工具,旨在简化容器集群的管理和部署。它是 Docker 引擎的一部分,与 Docker Engine 集成度高,更易于上手和部署。
  • Kubernetes: Kubernetes 是由 Google 开源的容器编排平台,是一个更为复杂和强大的系统,可以用于自动化部署、扩展和管理容器化应用程序。它具有更丰富的功能和更复杂的架构,适用于大型和复杂的容器集群。

3.2、功能和扩展性

  • Docker Swarm: Docker Swarm 提供了一组基本的容器编排功能,包括服务发现、负载均衡、自动扩展和滚动更新等。它的设计相对简单,适合于小型和中型规模的容器集群。
  • Kubernetes: Kubernetes 提供了更丰富和灵活的功能,包括自动伸缩、服务发现、负载均衡、容错和滚动更新等。它支持更复杂的应用场景和更大规模的容器集群,适合于企业级和生产环境的部署。

 3.3、部署和管理

  • Docker Swarm: Docker Swarm 的部署和管理相对简单,适合于小型团队和初学者。它与 Docker Engine 集成度高,易于使用和维护。
  • Kubernetes: Kubernetes 的部署和管理相对复杂,需要更多的配置和学习成本。但它提供了更强大的功能和更灵活的扩展性,适合于大型团队和复杂的生产环境。

3.4、社区和生态

  • Docker Swarm: Docker Swarm 的社区相对较小,但作为 Docker 公司的官方产品,得到了广泛的支持和关注。
  • Kubernetes: Kubernetes 的社区非常活跃,拥有庞大的用户群体和丰富的生态系统。它被广泛应用于各种行业和领域,得到了众多厂商和组织的支持和贡献。

二、安装和配置

环境:

1、安装 Docker Engine

※这是运行 Docker Swarm 的基础

如果未安装docker,请参考在CentOS系统中轻松安装和配置Docker指南这篇文章,这里不再过多赘述。

2、初始化Swarm集群

[root@swarm ~]# docker swarm init --advertise-addr 192.168.40.120

docker swarm init:这个命令初始化了一个新的 Docker Swarm 集群,并将当前节点设置为 Swarm 的 Manager 节点。

--advertise-addr 192.168.40.120:这个参数指定了节点的广播地址,即其他节点和服务将使用此地址与当前节点通信。在一个多节点的 Swarm 集群中,节点需要知道如何与其他节点进行通信,广播地址就是用来实现这个目的的。

查看集群当前状态

[root@swarm ~]# docker node ls

3、添加节点到Swarm集群

在两台node节点上执行 

[root@node2 ~]# docker swarm join --token SWMTKN-1-395np33k9100m0dr34i2bua1giph6udkj2ziai7ca3kfi4efne-7zp1gxjtvuhd2480m0v9f9nkh 192.168.40.120:2377

※ token和IP要填写自己的,千万不要复制笔者的

回到swarm节点查看集群状态

[root@swarm ~]# docker node ls

4、网络设置

  • 使用 Docker 内置网络: Docker Swarm 集群默认使用 Docker 内置的 overlay 网络模式来连接容器。可以使用 docker network create 命令创建自定义的 overlay 网络,然后在服务配置中指定使用该网络。
  • 自定义网络: 使用第三方的网络插件来创建自定义的网络,例如 Calico、Weave 等。这些插件可以提供更丰富的网络功能和管理选项。
  • 网络策略: 配置网络策略来限制容器之间的通信,例如使用标签和网络策略来限制容器访问特定的网络服务或资源。

三、服务管理

1、创建服务

在swarm节点上执行

[root@swarm ~]# docker service create --name my-service --replicas 1 -p 80:80 nginx:latest

--name my-service:指定服务的名称为 my-service。
--replicas 3:指定要启动的副本数量为 3 个,即在 Swarm 集群中启动 3 个相同的容器实例。
-p 80:80:将容器内部的 80 端口映射到主机的 80 端口,以便外部可以访问服务。
nginx:latest:指定容器映像为 nginx,并使用最新的版本。
执行该命令后,Docker Swarm 将会在集群中启动一个名为 my-service 的 Nginx 容器实例 

查看服务

[root@swarm ~]# docker service ls

查看更详细的信息

[root@swarm ~]# docker service inspect --pretty my-service 

2、扩展服务

在Swarm节点执行

[root@swarm ~]# docker service scale my-service=3

my-service 是要扩展的服务的名称,而 3 则是希望该服务的副本数量达到的目标值。

3、缩减服务 

[root@swarm ~]# docker service scale my-service=1

 4、删除服务

[root@swarm ~]# docker service rm my-service

四、节点管理 

1、查看节点状态

[root@swarm ~]# docker node ls

# 这个命令将列出 Swarm 集群中的所有节点,并显示它们的状态、角色、节点 ID、主机名、版本等信息。

 2、添加新节点

要将新节点添加到 Docker Swarm 集群中,首先需要准备好要加入的新节点,并确保它们满足集群的要求和配置

  1. 在新节点上安装 Docker Engine,确保版本与 Swarm 集群中的其他节点兼容。
  2. 加入 Swarm 集群, 在新节点上执行 docker swarm join 命令,将新节点加入到 Swarm 集群中。你需要知道 Swarm 集群的地址和令牌。
docker swarm join --token <TOKEN> <SWARM_MANAGER_IP>:2377
  • <TOKEN> 是用于加入 Swarm 集群的令牌,你可以通过 docker swarm join-token worker 或 docker swarm join-token manager 在集群中的任意节点上获取。
  • <SWARM_MANAGER_IP> 是 Swarm 集群中任一 Manager 节点的 IP 地址 。

3、从集群中删除节点

要从 Docker Swarm 集群中删除节点,需要执行以下步骤

  1. 查看节点列表: 首先,使用 docker node ls 命令查看当前 Swarm 集群中的节点列表,确定要删除的节点的 ID 或名称。
  2. 标记节点不可用(可选): 如果要删除的节点还在运行服务,可以使用 docker node update --availability drain <NODE_ID> 命令将节点标记为不可用。这将使 Swarm 在删除节点之前从该节点上迁移服务到其他节点上。
  3. 从集群中删除节点: 使用 docker node rm <NODE_ID> 命令将节点从 Swarm 集群中删除。请注意,删除节点会使该节点上的服务停止运行,并且服务可能会在其他节点上重新分配。

删除节点上运行的服务

[root@swarm ~]# docker node update --availability drain iy4blmqepvldb4un4yr7kwedx

 从集群删除节点

[root@swarm ~]# docker node rm iy4blmqepvldb4un4yr7kwedx --force

 五、网络管理

1、Swarm网络模型

Docker Swarm 使用了与 Docker Engine 相似的网络模型,但也有一些特定的方面与其不同。下面是 Docker Swarm 的网络模型的一些关键特点:

1. Overlay 网络

  • 默认网络模式: Docker Swarm 使用 overlay 网络模式作为默认的网络模式,这允许容器在整个 Swarm 集群中无缝通信。
  • 跨主机通信: Overlay 网络允许不同主机上的容器之间直接通信,无需显式端口映射或特殊配置。

2. 路由 Mesh

  • 路由 Mesh: Swarm 集群中的每个节点都维护着一个路由 Mesh,这个 Mesh 允许容器之间的跨节点通信。
  • 动态路由: 路由 Mesh 动态地更新和维护路由表,确保容器之间的通信能够顺利进行。

3. 内置服务发现和负载均衡

  • 内置服务发现: Swarm 提供内置的服务发现机制,使得容器可以通过服务名称而不是 IP 地址进行访问。
  • 内置负载均衡: Swarm 还提供了内置的负载均衡机制,可以将流量均匀地分配到多个容器实例之间。

4. 虚拟网络与子网划分

  • 虚拟网络: Swarm 允许创建虚拟网络,以便将容器划分到不同的逻辑网络中,以实现更好的隔离和管理。
  • 子网划分: 虚拟网络可以划分为多个子网,用于组织和管理容器的 IP 地址分配。

5. 外部连接和插件

  • 外部连接: Swarm 可以与外部网络连接,允许容器访问外部服务和资源。
  • 插件架构: Swarm 的网络模型支持插件架构,允许集成第三方网络插件,以满足特定的网络需求和场景。

2、创建网络

要在 Docker Swarm 中创建网络,可以使用 docker network create 命令

docker network create --driver overlay <NETWORK_NAME>

--driver overlay:指定网络驱动为 overlay,这是 Swarm 默认的网络驱动,用于实现跨主机的容器通信。

<NETWORK_NAME>:指定要创建的网络的名称。

 创建一个名为 my-network 的网络

[root@swarm ~]# docker network create --driver overlay my-network

查看网络

[root@swarm ~]# docker network ls 

 查看我们刚刚创建的网络的详细信息

[root@swarm ~]# docker network inspect my-network

 3、将服务连接到网络

[root@swarm ~]# docker service create --name my-service --network my-network nginx:latest

 --name my-service:指定服务的名称为 my-service。
--network my-network:指定要连接的网络名称为 my-network。
<IMAGE>:指定要使用的容器镜像。

六、负载均衡和高可用性

1、Swarm如何提供负载均衡和高可用性

负载均衡:

  1. 服务发现: Docker Swarm 提供内置的服务发现机制,允许容器通过服务名称而不是 IP 地址进行访问。这使得容器可以在不同节点之间动态部署和移动,而不需要手动配置服务地址。
  2. 内置负载均衡器: Swarm 自动在服务背后启动负载均衡器,它将流量分配给运行服务的所有节点上的容器。这使得服务能够平滑地处理流量,无需额外的配置。
  3. 服务副本: 通过在多个节点上运行服务的副本,Swarm 可以将流量均匀地分配到这些副本之间,以提高服务的可用性和吞吐量。 

高可用性:

  1. 故障恢复: 当容器或节点发生故障时,Docker Swarm 会自动重新调度容器到可用的节点上,以确保服务的持续运行和可用性。
  2. 服务健康检查: Swarm 具有内置的服务健康检查机制,可以定期检查服务的健康状态。当服务健康状态异常时,Swarm 将自动重新启动容器或进行故障恢复操作。
  3. 节点管理: Swarm 允许集群中的节点动态加入和离开,同时提供了节点健康检查和自动缩放的功能。这使得集群可以根据需求自动调整和优化资源分配,以应对负载和故障。

2、如何设计服务和网络以实现负载均衡和故障转移

服务设计:

  1. 多副本部署: 在 Docker Swarm 中,通过创建多个副本来部署服务,确保服务的高可用性和负载均衡。你可以使用 --replicas 参数指定服务的副本数量。
  2. 健康检查: 配置服务的健康检查机制,使得 Swarm 能够定期检查服务的健康状态。如果某个副本的健康状态异常,Swarm 将会自动进行故障转移,重新调度容器到其他健康的节点上。
  3. 负载均衡器: 在服务前端引入负载均衡器,例如使用 Swarm 内置的负载均衡机制或者外部负载均衡器,以均匀地分配流量到各个服务副本中。

网络设计:

  1. Overlay 网络: 使用 Docker Swarm 中的 overlay 网络模式,实现跨节点的容器通信。这样,服务的不同副本可以跨节点之间进行通信,无需手动配置。
  2. 服务发现: 利用 Swarm 内置的服务发现机制,通过服务名称而不是 IP 地址来访问服务。这样,无论服务在集群中的哪个节点上运行,客户端都可以通过服务名称来访问服务。
  3. 网络安全: 确保网络安全,使用合适的网络策略和防火墙规则,限制对服务的访问,以防止未经授权的访问和攻击。

故障转移:

  1. 节点管理: 使用 Swarm 的节点管理功能,动态监控节点的健康状态,及时检测和处理节点的故障。当节点发生故障时,Swarm 将自动重新调度容器到其他健康的节点上。
  2. 服务监控和日志: 配置服务监控和日志系统,实时监控服务的运行状态和日志信息。这样,可以及时发现和解决服务的异常情况,提高服务的可靠性和稳定性。

🎗️🎗️🎗️以上仅是我对Docker Swarm的个人观点与见解,如果您有任何不同的看法或建议,我非常欢迎在评论区与我分享和讨论。

🚩🚩🚩对于希望深入了解Docker技术的朋友们,我诚挚地邀请您关注我的Docker专栏Docker从零到精通:实战指南。我会定期更新和分享Docker领域的最新知识、技术动态和前沿实践,希望能为您的Docker学习之旅提供有价值的参考和指导。

❤️❤️❤️最后,请允许我衷心感谢您的阅读和对本专栏的支持!您的鼓励是我持续创作的最大动力。希望我们能在Docker的学习道路上共同进步,共创辉煌!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/429748.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Rabbitmq消息丢失-消费者消息丢失(二)

说明&#xff1a;消费端在处理消息的过程中出现异常&#xff0c;例如&#xff1a;业务逻辑异常&#xff0c;或者消费者被停机&#xff0c;或者网络断开连接等&#xff0c;以上等情况使消息没有得到正确恰当的处理&#xff0c;也会使消息丢失。 分析&#xff1a;分析就是说明中…

【MATLAB第97期】基于MATLAB的贝叶斯Bayes算法优化BiGRU双向门控循环单元的多输入单输出回归预测模型,含GRU与BiGRU多层结构优化选择

【MATLAB第97期】基于MATLAB的贝叶斯Bayes算法优化BiGRU双向门控循环单元的多输入单输出回归预测模型&#xff0c;含GRU与BiGRU结构层数优化 前言 前面在【MATLAB第10期】讲解了基于贝叶斯Bayes算法优化LSTM长短期记忆网络的多输入单输出回归预测模型。 本次模型难点包括&am…

Ps:图案图章工具

图案图章工具 Pattern Stamp Tool可将各种预设图案或自定义的图案&#xff0c;通过画笔涂抹的方式填充到图像中。 快捷键&#xff1a;S 图案图章工具提供了一种快速、灵活的方式来为图像局部添加纹理和装饰。 这个工具类似于仿制图章工具&#xff0c;但区别在于&#xff0c;它使…

初阶数据结构:二叉树(补充扩展)

目录 1. 堆排序1.1补充&#xff1a;建堆的时间复杂度1.2 堆排序&#xff1a;升序与降序 2. TopK问题3. 二叉树的链式结构及其遍历方式3.1 二叉树的链式结构3.2 二叉树的前序遍历2.2 二叉树的中序遍历2.3 后序遍历2.4 层序遍历 4. 二叉树OJ练习4.1 单值二叉树4.2 判断两棵二叉树…

three.js如何实现简易3D机房?(一)基础准备-上

目录 一、tips 二、功能说明 1.模型初始化 2.功能交互 三、初始化准备 1.目录结构 2.创建三要素 3.创建轨道控制器 4.初始化灯光 5.适配 6.循环渲染 一、tips 1.three.js入门的相关基础性知识就不在此过多赘述了&#xff0c;可以自行提前了解 three.js docs&…

PyTorch深度学习实战(38)——StyleGAN详解与实现

PyTorch深度学习实战&#xff08;38&#xff09;——StyleGAN详解与实现 0. 前言1. StyleGAN1.1 模型介绍1.2 模型策略分析 2. 实现 StyleGAN2.1 生成图像2.2 风格迁移 小结系列链接 0. 前言 StyleGAN (Style-Generative Adversarial Networks) 是生成对抗网络 (Generative Ad…

基于Docker部署本地ChatGPT环境

基于Docker部署本地ChatGPT环境 一、拉取镜像 docker pull pengzhile/pandora二、运行镜像 docker run -e PANDORA_CLOUDcloud -e PANDORA_SERVER0.0.0.0:8899 -p 8899:8899 -d pengzhile/pandora三、查看容器是否启动成功 docker ps四、登录 http://IP:8899 这里有两种方…

原始手写helloworld并打jar包允许

1.创建文件夹test统一在其中操作 2.创建hello.java文件 【hello.txt改属性为hello.java】并在里面添加代码 public class hello {public static void main(String[] args) {System.out.println("hello world");} } 注意&#xff1a;类名与文件名一致 然后运行…

使用AI创建令人惊叹的3D模型

老子云平台《《《《《 使内容创作者能够在一分钟内毫不费力地将文本和图像转换为引人入胜的 3D 资产。 文本转 3D 我们的文本转 3D 工具使创作者&#xff08;包括那些没有 3D 经验的创作者&#xff09;能够使用文本输入在短短一分钟内生成 3D 模型。 一句话生成3D模型 老子…

FPGA-VGA成像原理与时序

什么是VGA: VGA, Video Graphics Array。即视频图形阵列,具有分辨率高、显示速率快、颜色丰富等优点。VGA接口不但是CRT显示设备的标准接口,同样也是LCD液晶显示设备的标准接口,具有广泛的应用范围。在FGPA中,常广泛用于图像处理等领域。 VGA 显示器成像原理 在 VGA 标准刚兴…

Material UI 5 学习02-其它按钮组件

Material UI 5 学习02-其它按钮组件 一、IconButton按钮二、 ButtonGroup按钮组1、最基本的实例2、垂直按钮组 一、IconButton按钮 图标按钮通常适用于切换按钮&#xff0c;允许选择或选择单个选项 取消选择&#xff0c;例如在项目中添加或删除星号。 <IconButton aria-lab…

docker pull 拉取失败,设置docker国内镜像

遇到的问题 最近在拉取nginx时&#xff0c;显示如下错误&#xff1a;Error response from daemon: Get “https://registry-1.docker.io/v2/”: net/http: request canceled (Client.Timeout exceeded while awaiting headers)。 这个的问题是拉取镜像超时&#xff0c;通过检索…

RISC-V特权架构 - 机器模式下的异常处理

RISC-V特权架构 - 机器模式下的异常处理 1 进入异常1.1 从mtvec 定义的PC 地址开始执行1.2 更新CSR 寄存器mcause1.3 更新CSR 寄存器mepc1.4 更新CSR 寄存器mtval1.5 更新CSR 寄存器mstatus 2 退出异常2.1 从mepc 定义的PC 地址开始执行2.2 更新CSR 寄存器mstatus 3 异常服务程…

Docker Protainer可视化平台,忘记登录密码,重置密码。

由于好久没有登录portainer系统&#xff0c;导致忘记了登录密码&#xff0c;试了好多常用的密码都不对&#xff0c;无奈只能重置密码。 一、停止protainer 容器 查看容器ID和COMMAND 用于停止容器 docker ps -a停止容器 docker stop portainer二、查找volume data 宿主机所在…

脉冲电阻器负载、功率和电压降额,选型分析

本文讨论了关键的电阻脉冲负载、功率和电压降额参数&#xff0c;这些参数对于正确选择指南和可靠运行这些无源元件非常重要。 EAK脉冲负载 在许多应用中&#xff0c;电阻器将承受脉冲负载。我们区分周期性/重复性负载和脉冲序列;一方面&#xff0c;脉冲以一定频率重复&#xff…

Spring中最常用的11个扩展点

前言 我们一说到spring&#xff0c;可能第一个想到的是 IOC&#xff08;控制反转&#xff09; 和 AOP&#xff08;面向切面编程&#xff09;。 没错&#xff0c;它们是spring的基石&#xff0c;得益于它们的优秀设计&#xff0c;使得spring能够从众多优秀框架中脱颖而出。 除…

Thingsboard本地源码部署教程

本章将介绍ThingsBoard的本地环境搭建&#xff0c;以及源码的编译安装。本机环境&#xff1a;jdk11、maven 3.6.2、node v12.18.2、idea 2023.1、redis 6.2 环境安装 开发环境要求&#xff1a; Jdk 11 版本 &#xff1b;Postgresql 9 以上&#xff1b;Maven 3.6 以上&#xf…

PaddleOCR CPU 文本文字识别 docker部署

需求&#xff1a; 需要把所有滑块图片的数据文字提取出来 启动服务 mkdir paddle cd paddle docker run -itd --name ppocr -v $PWD:/paddle --networkhost -it registry.baidubce.com/paddlepaddle/paddle:2.1.3-gpu-cuda10.2-cudnn7 /bin/bash docker exec -it ppocr bash …

深入理解Tomcat

目录&#xff1a; TomcatTomcat简介如何下载tomcatTomcat工作原理Tomcat架构图Tomcat组件Server组件Service组件Connector组件Engine组件Host组件Context组件 配置虚拟主机(Host)配置Context Tomcat Tomcat简介 Tomcat服务器是Apache的一个开源免费的Web容器。它实现了JavaEE…

mysql学习笔记7——数据库查询深入

.sql文件 在实际使用数据库时&#xff0c;常常要对数据库文件进行备份&#xff0c;以便在数据库遭到入侵或者非人为因素导致损坏后&#xff0c;快速恢复数据 .sql文件便提供了这种功能&#xff0c;首先.sql文件是由一串串mysql指令组成的&#xff0c;我们插入.sql文件实际相当…