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,并成功构建和管理自己的容器编排集群。

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

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

相关文章

PyQt6 使用Qt Designer实现简单的界面,以及ui文件转py文件

前言&#xff0c;主要通过参考并总结两篇文章中的部分内容&#xff0c;参考文章一 && 参考文章二 Qt 设计师简单例子 一、需求分析二、界面设计三、生成ui文件四、ui文件转py文件1、命令行 执行 uic 生成 py代码2、PyCharm 配置 Pyuic工具2.1 配置Pyuic工具2.2 测试是否…

Linux---查看文件内容命令

1. 查看文件内容命令的使用 命令说明cat查看小型文件more分屏查看大型文件 cat命令的效果图 说明: cat命令结合重定向可以完成多个文件的合并gedit 文件编辑命令&#xff0c;可以查看和编辑文件 more命令的效果图 当查看内容信息过长无法在一屏上显示时&#xff0c;可以使…

C# WPF上位机开发(属性页面的设计)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 在软件开发中&#xff0c;属性或者参数设置是很重要的一个部分。这个时候如果不想通过动态添加控件的方法来处理的话&#xff0c;那么可以通过tab控…

Python将已标注的两张图片进行上下拼接并修改、合并其对应的Labelme标注文件(v2.0)

Python将已标注的两张图片进行上下拼接并修改、合并其对应的Labelme标注文件&#xff08;v2.0&#xff09; 前言前提条件相关介绍实验环境上下拼接图片并修改、合并其对应的Labelme标注文件代码实现输出结果 前言 此版代码&#xff0c;相较于Python将已标注的两张图片进行上下拼…

Android通过listview实现输入框自定义提示栏(代替AutoCompleteTextView自动完成文本框)

效果图 背景 本人因为一些需求初次接触android&#xff0c;需要实现一个类似android自带的AutoCompleteTextView&#xff08;自动完成文本框&#xff09;&#xff0c;但和其不同的是通过后端接口直接筛选数据&#xff08;自己的分词处理规则&#xff09;&#xff0c;然后返回前…

虚幻学习笔记17—C++委托(单播)

一、前言 相比“代理”这个名词我更喜欢叫“委托”&#xff0c;虚幻的委托分为三类&#xff0c;分别为单播、多播和动态多播。单播顾名思义就是一次只能绑定一个函数的委托&#xff0c;多播能一次性绑定多个&#xff0c;动态多播即可以在蓝图中进行动态的绑定且可以绑定多个。 …

MySQL进阶2 - 索引

MySQL进阶1 - 索引 1. 索引概述2. 索引结构2.1 二叉树2.2 B-Tree(多路平衡查找树)2.3 BTree2.4 Hash 3. 索引分类4. 索引语法5. SQL性能分析5.1 SQL执行频率5.2 慢查询日志5.3 profile5.4 explain执行计划5.3.1 EXPLAIN执行计划各字段含义&#xff1a; 6. 索引使…

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

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

Redis设计与实现之跳跃表

目录 一、跳跃表 1、跳跃表的实现 2、跳跃表的应用 3、跳跃表的时间复杂度是什么&#xff1f; 二、跳跃表有哪些应用场景&#xff1f; 三、跳跃表和其他数据结构&#xff08;如数组、链表等&#xff09;相比有什么优点和缺点&#xff1f; 四、Redis的跳跃表支持并发操作吗…

消除非受检警告

在Java中&#xff0c;有一些情况下编译器会生成非受检警告&#xff08;Unchecked Warnings&#xff09;。这些警告通常与泛型、类型转换或原始类型相关。消除这些警告可以提高代码的可读性和安全性。以下是一些常见的非受检警告以及如何消除它们的例子&#xff1a; 1. 泛型类型…

0基础学习VR全景平台篇第128篇:720VR全景拍摄设备推荐

上课&#xff01;全体起立~ 大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 本篇教程&#xff0c;小编为大家推荐720VR全景拍摄所需要的设备器材。上节我们提到&#xff0c;理论上任意相机和镜头都能够拍摄全景&#xff0c;但为了标准化制作流程&#xff0…

oracle 锁表解决办法

相关表介绍 V$LOCKED_OBJECT&#xff08;记录锁信息的表&#xff09;v$session&#xff08;记录会话信息的表&#xff09;v$sql&#xff08;记录 sql 执行的表&#xff09;dba_objects&#xff08;用来管理对象&#xff0c;表、库等等&#xff09; 查询锁表的 SID select b.…

t-io 程序执行后,jvm不退出的原因

基于t-io 1.7.3 版本分析源码 1、设定当前时间&#xff0c;每10毫秒执行一次 (非守护线程) 2、对应线程池的核心线程在AioServer启动时全部激活&#xff0c;并且添加空任务到阻塞队列&#xff0c;让核心线程(非守护线程)一直存活

等等Domino 14.0FP1

大家好&#xff0c;才是真的好。 节奏确实太快了&#xff0c;有时候我深感我也追不上。 以前Notes Domino是三年磨一剑&#xff0c;也就说每三年才发一个大版本&#xff0c;从2019年开始&#xff0c;进行了高频提速&#xff0c;居然一年一个大版本&#xff01; 周末&#xf…

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

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

Linux--Docker容器(1)

这里写目录标题 简介名词解释作用 指令在本地创建容器的过程&#xff1a;&#xff08;这里以tomcat为例&#xff09;访问容器端口映射目录挂载验证端口映射验证目录挂载 删除镜像多小组访问容器mysql容器 简介 名词解释 Docker镜像&#xff1a;可以将镜像理解为面向对象的类&a…

黑豹程序员-axios+springmvc传递数组

问题 奇怪的现象&#xff0c;axios在往后台传递数组时&#xff0c;springmvc竟然接收不到 解决 尝试多次无果&#xff0c;突然看一篇文章写vue中的数组不是真正的数组需要强转转化JSON.stringify 将信将疑下测试了一把&#xff0c;还真的传递成功了。 不光要JSON.stringify…

[PyTorch][chapter 6][李宏毅深度学习][Logistic Regression]

前言&#xff1a; logistic回归又称logistic回归分析&#xff0c;是一种广义的线性回归分析模型&#xff0c;常用于数据挖掘&#xff0c;疾病自动诊断&#xff0c;经济预测等领域。 逻辑回归根据给定的自变量数据集来估计事件的发生概率&#xff0c;由于结果是一个概率&#xf…

linux内核使用ppm图片开机

什么是ppm图片 PPM&#xff08;Portable Pixmap&#xff09;是一种用于存储图像的文件格式。PPM图像文件以二进制或ASCII文本形式存储&#xff0c;并且是一种简单的、可移植的图像格式。PPM格式最初由Jef Poskanzer于1986年创建&#xff0c;并经过了多次扩展和修改。 PPM图像…

Axure的动态面板的使用

目录 1.什么是动态面板&#xff1f; 2.使用动态面板 ​编辑 轮播图 erp的登录系统 erp侧边栏 1.什么是动态面板&#xff1f; 动态面板是Axure的高级交互元件&#xff0c;由不同的状态面板组成&#xff0c;是我们制作交互过程中运用频率最高的元件&#xff0c;很多交互效果需…