Docker Swarm编排:构建简单集群

Docker Swarm 是 Docker 官方提供的容器编排工具,通过它可以轻松构建和管理多个 Docker 容器的集群。本文将深入探讨 Docker Swarm 的基础概念、构建集群的步骤,并提供更为丰富和实际的示例代码,帮助大家全面了解如何使用 Docker Swarm 搭建一个简单而强大的容器编排集群。

Docker Swarm基础概念

1 什么是Docker Swarm?

Docker Swarm 是 Docker 官方提供的原生容器编排工具,它允许用户创建和管理分布在多个节点上的 Docker 容器集群。Swarm 提供了简单易用的命令行工具,使得容器的部署、伸缩和管理变得更加容易。

2 Docker Swarm的主要组件

  • Manager节点: Swarm集群的控制节点,负责接收用户的命令,调度容器,并管理集群状态。
  • Worker节点: 执行 Swarm 集群中的容器实例,接收 Manager 的指令并运行相应的容器。

Docker Swarm集群的构建

1 初始化Swarm集群

首先,选择一个节点作为 Swarm 的 Manager,并执行以下命令初始化 Swarm:

docker swarm init --advertise-addr <MANAGER-IP>

上述命令会返回一个输出,其中包含用于将其他节点加入集群的 docker swarm join 命令。将这个命令复制到其他节点执行,即可将它们加入 Swarm 集群。

2 查看Swarm集群状态

使用以下命令查看 Swarm 集群的状态:

docker info

3 在Swarm集群中添加Worker节点

在其他节点上执行以下命令,将它们加入 Swarm 集群:

docker swarm join --token <TOKEN> <MANAGER-IP>:<PORT>

其中 <TOKEN><MANAGER-IP>:<PORT> 是在初始化 Manager 节点时生成的。

在Swarm中部署服务

1 创建一个简单的服务

通过以下命令在 Swarm 集群中创建一个简单的 Nginx 服务:

docker service create --name my_nginx --replicas 3 -p 80:80 nginx:latest

上述命令创建了一个名为 my_nginx 的服务,指定了3个副本,并将服务的80端口映射到主机的80端口。

2 查看服务状态

通过以下命令查看服务状态:

docker service ls

3.3 伸缩服务

通过以下命令伸缩服务的副本数量:

docker service scale my_nginx=5

这会将 my_nginx 服务的副本数量扩展到5个。

Docker Swarm中的滚动更新

1 更新服务

通过以下命令更新服务,例如,将 Nginx 镜像升级到新版本:

docker service update --image nginx:latest my_nginx

2 查看服务更新状态

通过以下命令查看服务更新的状态:

docker service ps my_nginx

Docker Swarm网络

1 创建Overlay网络

在 Swarm 集群中,使用 Overlay 网络可以实现跨节点的容器通信。通过以下命令创建一个 Overlay 网络:

docker network create --driver overlay my_overlay_network

2 在服务中使用Overlay网络

在创建服务时,将其加入到创建的 Overlay 网络:

docker service create --name my_webapp --network my_overlay_network my_webapp_image

Docker Swarm的滚动部署

1 创建滚动部署服务

通过以下命令创建一个滚动部署的服务:

docker service create --name my_app --update-delay 10s --update-parallelism 2 my_app_image

上述命令中,--update-delay 设置了更新延迟,--update-parallelism 设置了并行更新的副本数。

2 查看滚动部署状态

使用以下命令查看滚动部署的状态:

docker service ps my_app

Docker Swarm的健康检查

1 配置健康检查

Docker Swarm 允许配置服务的健康检查,以确保容器实例的健康状态。在创建服务时,可以通过 --health-cmd--health-interval 等选项配置健康检查参数。

docker service create --name my_health_check_service --health-cmd "curl -f http://localhost/ || exit 1" --health-interval 5s my_health_check_image

上述命令创建了一个带有健康检查的服务,每5秒检查一次容器的健康状态。

2 查看健康状态

通过以下命令查看服务的健康状态:

docker service inspect --pretty my_health_check_service

Docker Swarm的日志管理

1 查看服务日志

使用以下命令查看服务的日志:

docker service logs my_service

2 配置日志驱动

可以在创建服务时通过 --log-driver--log-opt 配置日志驱动和相关选项:

docker service create --name my_logging_service --log-driver json-file --log-opt max-size=50m my_logging_image

上述命令创建了一个服务,使用 json-file 日志驱动,并设置最大日志文件大小为50MB。

Docker Swarm的安全性

1 TLS加密通信

在 Swarm 集群中启用 TLS 加密通信,提高集群通信的安全性。首先,生成 TLS 证书:

docker swarm ca --rotate

然后,使用以下命令初始化 Swarm 时启用 TLS:

docker swarm init --advertise-addr <MANAGER-IP> --certs-dir /var/swarm-certs

2 隔离服务网络

在创建服务时,可以通过 --isolated 选项将服务的网络隔离起来:

docker service create --name my_isolated_service --isolated my_isolated_image

Docker Swarm的可视化管理

1 使用Portainer

Portainer 是一个简单易用的 Docker 可视化管理工具。通过以下命令在 Swarm 中部署 Portainer:

docker service create --name portainer --publish 9000:9000 --constraint 'node.role==manager' --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock portainer/portainer-ce

然后,通过浏览器访问 http://<MANAGER-IP>:9000,即可使用 Portainer 进行集群的可视化管理。

总结

通过深入了解 Docker Swarm 的健康检查、日志管理、安全性配置以及可视化管理等方面,本文提供了更为丰富和实际的示例代码。Docker Swarm 是一个强大的容器编排工具,支持多节点的集群管理,提供了众多功能来简化容器化应用的部署和运维。

希望通过这篇文章,大家能够更全面地了解 Docker Swarm,并成功构建和管理自己的容器编排集群。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

0x21 树与图的遍历

0x21 树与图的遍历 树与图最常见的储存方式就是使用一个邻接表保存它们的边集。邻接表以head数组为表头&#xff0c;使用ver和edge数组分别存储边的终点和权值&#xff0c;使用next数组模拟链表指针&#xff08;就像我们在0x13节中讲解邻接表所给出的代码那样&#xff09;。 …

大数据生态圈kafka在物联网中的应用测试

背景 由物联网项目中使用到了Tbox应用管理车辆&#xff0c;在上报数据的过程中&#xff0c;需要将终端产生的数据通过kafka的produce topic customer对数据进行处理后&#xff0c;放置到mysql中。完成数据二进制到json转换工作。 Kafka的使用 查看kafka的topic ./kafka-topi…

【Trino权威指南(第二版)】Trino的架构、trino架构组件、 trino连接器架构的细节、trino的查询执行模型

文章目录 一. Trino架构1. 架构概览2. 协调器3. 发现服务4. 工作节点 二. 基于连接器的架构三. 查询执行模型1. 解析—>查询计划2. 查询计划 —> 分布式查询计划3. 运行阶段3.1. 基础概念切片&#xff1a;并行单元page 与 exchange算子pipeline切片的driverOperator 3.2.…

Redis 的常见使用场景

01 缓存 作为 Key-Value 形态的内存数据库&#xff0c;Redis 最先会被想到的应用场景便是作为数据缓存。而使用 Redis 缓存数据非常简单&#xff0c;只需要通过 string 类型将序列化后的对象存起来即可&#xff0c;不过也有一些需要注意的地方&#xff1a; 必须保证不同对象的…

STL中sort的底层实现

文章目录 1、源码分析2、算法优化3、总结 在讲解STL中sort的底层原理之前&#xff0c;先引申出这样几个问题&#xff1f; ①STL中sort的底层是采用哪种或者哪几种排序&#xff1f; ②STL中sort会导致栈溢出吗&#xff1f; ③快速排序的时间复杂度是不稳定的 l o g 2 n log_2n l…

2024年顶级的9个 Android 数据恢复工具(免费和付费)

不同的事情可能会损坏您的Android手机并导致您丢失数据。但大多数时候&#xff0c;您可以使用取证工具恢复部分或全部文件。 问题可能来自手机的物理损坏、磁盘的逻辑故障、完整的系统擦除&#xff0c;或者只是简单的粗心大意。 但是&#xff0c;无论数据丢失的原因是什么&am…

docker小白第四天

docker小白第一天 什么是镜像 1、是一种轻量级、可执行的独立软件包&#xff0c;它包含运行某个软件所需的所有内容&#xff0c;我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等)&#xff0c;这个打包好的运行环境就…

三、Spring IoC 容器和核心概念

本章概要 组件和组件管理概念 什么是组件&#xff1f;我们的期待Spring充当组件管理角色&#xff08;IoC&#xff09;组件交给Spring管理优势 Spring IoC 容器和容器实现 普通和复杂容器SpringIoC 容器介绍SpringIoC 容器具体接口和实现类SpringIoC 容器管理配置方式 Spring I…

Golang学习之路一开山篇

Golang学习之路一开山篇 初识 Golang 我第一次接触 Golang 是在2016年, 当时在深圳工作, 项目需要用Golang, 当时在犹豫要不要学还是走, 毕竟Java开发搞了很多年了, 说放弃还是有难度的, 其实也不是放弃Java, 说不定其他项目还是要使用Java. 在领导的再三劝说下, 开启了Golan…

嵌入式开发人员需要具备哪些能力?

大家好&#xff0c;今天给大家介绍嵌入式开发人员需要具备哪些能力&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 嵌入式开发人员需要具备以下能力&#xff1a; 熟练掌握C/C语…

Kubernetes 的用法和解析 -- 2

一.集群常用指令 1.1 基础控制指令 # 查看对应资源: 状态 $ kubectl get <SOURCE_NAME> -n <NAMESPACE> -o wide [rootkube-master ~]# kubectl get pods -n kuboard -o wide# 查看对应资源: 事件信息 $ kubectl describe <SOURCE_NAME> <SOURCE_NAME_R…

产品入门第五讲:Axure交互和情境

目录 一.Axure交互和情境的介绍 1.交互介绍 概念 常见的Axure交互设计技巧 2.情境介绍 概念 常见的Axure情境设计技巧&#xff1a; 二.实例展示 1.ERP登录页到主页的跳转 2.ERP的菜单跳转到各个页面 &#x1f4da;&#x1f4da; &#x1f3c5;我是默&#xff0c;一个…

七. 使用ts写一个贪吃蛇小游戏

之前学习了几篇的ts基础&#xff0c;今天我们就使用ts来完成一个贪吃蛇的小游戏。 游戏拆解 我们将我们的任务进行简单拆解分析。 首先我们应该有一个窗口&#xff0c;我们叫做屏幕。让蛇在里面移动&#xff0c;所有我们应该想到要设计一个大盒子当作地图。考虑到食物以及蛇…

【LeetCode刷题笔记(7-1)】【Python】【四数之和】【哈希表】【中等】

文章目录 四数之和题目描述示例 1示例 2提示解决方案1&#xff1a;【四层遍历查找】解决方案2&#xff1a;【哈希表】【三层遍历】 结束语 四数之和 四数之和 题目描述 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件…

服务器一直掉线怎么回事?

随着网络的高速发展&#xff0c;不管是网站还是游戏&#xff0c;如果遇到服务器卡顿的情况&#xff0c;会造成用户访问网站或进游戏&#xff0c;网站页面长时间无法打开&#xff0c;游戏页面运行卡顿&#xff0c;这样就很容易会造成用户的流失&#xff0c;从而导致业务亏损极大…

可视化数据监控大屏网页界面,数据大屏模版PS资料(免费UI源文件)

数据大屏模板在大数据领域被广泛应用&#xff0c;其优势在于能够将复杂的数据通过图形、图表等方式呈现出来&#xff0c;使数据更易于理解。数据大屏模板可以用来进行数据分析。通过对数据的比较、趋势分析、异常检测等&#xff0c;可以发现数据中的规律和问题&#xff0c;为决…

Appium知多少

Appium我想大家都不陌生&#xff0c;这是主流的移动自动化工具&#xff0c;但你对它真的了解么&#xff1f;为什么很多同学搭建环境时碰到各种问题也而不知该如何解决。 appium为什么英语词典查不到中文含义&#xff1f; appium是一个合成词&#xff0c;分别取自“application…

51单片机项目(21)——基于51单片机的音乐流水灯

1.功能描述 本次所做设计&#xff0c;有流水灯的功能&#xff0c;使用了16颗LED灯&#xff0c;同时还可以播放音乐。单片机存储了三首音乐&#xff0c;通过声音检测模块触发其进行切换。&#xff08;仿真图里面使用一个按键来代码声音检测模块&#xff09; 此外&#xff0c;还…

四十七、Redis分片集群

目录 一、分片集群结构 二、散列插槽 1、Redis如何判断某个key应该在哪个实例&#xff1f; 2、如何将同一类数据固定的保存在同一个Redis实例&#xff1f; 三、集群伸缩 四、故障转移 1、当集群中有一个master宕机时 &#xff08;1&#xff09;自动转移 &#xff08;2&…

使用opencv的Laplacian算子实现图像边缘检测

1 边缘检测介绍 图像边缘检测技术是图像处理和计算机视觉等领域最基本的问题&#xff0c;也是经典的技术难题之一。如何快速、精确地提取图像边缘信息&#xff0c;一直是国内外的研究热点&#xff0c;同时边缘的检测也是图像处理中的一个难题。早期的经典算法包括边缘算子方法…