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.rhkb.cn/news/218177.html

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

相关文章

解决Chrome同一账号在不同设备无法自动同步书签的问题

文章目录 一、问题与原因&#xff1f;2. 解决办法 一、问题与原因&#xff1f; 1.问题 使用谷歌Chrome浏览器比较头疼的问题就是&#xff1a;使用同一个Google账号&#xff0c;办公电脑与家用电脑的数据无法同步。比如&#xff1a;办公电脑中的书签、浏览记录等数据&#xff0…

【深度学习目标检测】六、基于深度学习的路标识别(python,目标检测,yolov8)

YOLOv8是一种物体检测算法&#xff0c;是YOLO系列算法的最新版本。 YOLO&#xff08;You Only Look Once&#xff09;是一种实时物体检测算法&#xff0c;其优势在于快速且准确的检测结果。YOLOv8在之前的版本基础上进行了一系列改进和优化&#xff0c;提高了检测速度和准确性。…

网络互通--三层交换机配置

目录 一、三层交换机的原理 1、概念 2、PC A与不同网段的PC B第一次数据转发过程 3、一次路由&#xff0c;多次转发的概念 4、 三层交换机和路由器的比较 二、利用实验理解交换机 1、建立以下拓扑图​编辑 2、分别配置主机的IP地址&#xff0c;子网掩码、网关等信息 3、…

[每周一更]-(第27期):HTTP压测工具之wrk

[补充完善往期内容] wrk是一款简单的HTTP压测工具,托管在Github上,https://github.com/wg/wrkwrk 的一个很好的特性就是能用很少的线程压出很大的并发量. 原因是它使用了一些操作系统特定的高性能 io 机制, 比如 select, epoll, kqueue 等. 其实它是复用了 redis 的 ae 异步事…

Axure的安装及界面基本功能介绍

目录 一. Axure概述 二. Axure安装 2.1 安装包下载 2.2 安装步骤 三. Axure功能介绍​ 3.1 工具栏介绍 3.1.1 复制&#xff0c;剪切及粘贴 3.1.2 选择模式和连接 3.1.3 插入形状 3.1.4 点&#xff08;编辑控点&#xff09; 3.1.5 置顶和置底 3.1.6 组合和取消组合 …

(1)(1.8) MSP(MultiWii 串行协议)(4.1 版)

文章目录 前言 1 协议概述 2 配置 3 参数说明 前言 ArduPilot 支持 MSP 协议&#xff0c;可通过任何串行端口进行遥测和传感器。这允许 ArduPilot 将其遥测数据发送到 MSP 兼容设备&#xff08;如大疆护目镜&#xff09;&#xff0c;用于屏幕显示&#xff08;OSD&#xff…

2021年数维杯国际大学生数学建模A题新冠肺炎背景下港口资源优化配置策略求解全过程文档及程序

2021年数维杯国际大学生数学建模 A题 新冠肺炎背景下港口资源优化配置策略 原题再现&#xff1a; 2020年初&#xff0c;新型冠状病毒&#xff08;COVID-19&#xff09;在全球迅速蔓延。根据世界卫生组织2021年7月31日的报告&#xff0c;新冠病毒疫情对人类的影响可能比原先预…

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…

系统运行占用过高

1、CPU过高的问题排查 示例代码&#xff1a; public class Test { static class MyThread extends Thread { public void run() { // 死循环&#xff0c;消耗CPU int i 0; while (true) { i; } } } public static void main(String args[]) throws InterruptedException { ne…

Unity实现GoF23种设计模式

文章目录 Unity实现GoF23种设计模式概要一、创建型模式(Creational Patterns):二、结构型模式(Structural Patterns):三、行为型模式(Behavioral Patterns):Unity实现GoF23种设计模式概要 GoF所提出的23种设计模式主要基于以下面向对象设计原则: 对接口编程而不是对实…

阿里云服务器ECS安全组开启端口教程

阿里云服务器安全组开启端口教程 云服务器 ECS&#xff08;Elastic Compute Service&#xff09; 云服务器 ECS&#xff08;Elastic Compute Service&#xff09;是一种安全可靠、弹性可伸缩的云计算服务&#xff0c;助您降低 IT 成本&#xff0c;提升运维效率&#xff0c;使您…

【异常解决】SpringBoot + Maven 在 idea 下启动报错 Unable to start embedded Tomcat(已解决)

Unable to start embedded Tomcat&#xff08;已解决&#xff09; 一、背景介绍二、原因分析2.1 网络上整理2.2 其他原因 三、解决方案 一、背景介绍 spring boot(v2.5.14) maven idea 启动项目 之前项目一直启动的好好的&#xff0c;都能正常运行。重启的时候突然就不能启…

万户 OA OfficeServer.jsp 任意文件上传漏洞复现

0x01 产品简介 万户OA是面向政府组织及企事业单位的FlexOffice自主安全协同办公平台。 0x02 漏洞概述 万户OA OfficeServer.jsp接口存在任意文件上传漏洞,攻击者可通过该漏洞上传任意文件从而控制整个服务器。 0x03 复现环境 FOFA: (banner="OASESSIONID" &a…

vue中实现PDF文件流预览

代码示例 <template><div class"print"><div v-if"!viewShow" class"opt-box"><div style"height: 700px; overflow: auto;"><el-table :data"tableData" border><el-table-column prop…

lv12 linux内核的安装与加载

目录 1 tftp加载Linux内核及rootfs 1.1 uboot内核启动命令 1.2 uboot自启动参数环境变量 1.3 实验 2 EMMC加载Linux 内核及rootfs ​编辑 2.1 emmc中写入uimage ​编辑 2.2 emmc中写入dtb 2.3 emmc中写入根文件系统 2.4 设置环境变量 3 tftp加载Linux内核nfs挂载ro…

Echarts 热力图与折线图的结合

热力图与折线图结合使用(文末含源码) 这种需求并不多见&#xff0c;遇到后第一时间翻看了Echars官方文档&#xff0c;并没有发现类似的例子。于是自己动手合并了双轴&#xff0c;后发现折线图会被遮盖。经过排查发现了一个关键参数&#xff1a;visualMap的配置。这个配置在热力…

C# 雪花算法生成Id工具类

写在前面 传说自然界中并不存在两片完全一样的雪花的&#xff0c;每一片雪花都拥有自己漂亮独特的形状、独一无二&#xff1b;雪花算法也表示生成的ID如雪花般独一无二&#xff0c;该算法源自Twitter。 雪花算法主要用于解决分布式系统的唯一Id生成问题&#xff0c;在生产环境…

IDEA新建jdk8 spring boot项目

今天新建spring boot项目发现JDK版本最低可选17。 但是目前用的最多的还是JDK8啊。 解决办法 Server URL中设置&#xff1a; https://start.aliyun.com/设置完成后&#xff0c;又可以愉快的用jdk8创建项目了。 参考 https://blog.csdn.net/imbzz/article/details/13469117…

Pytorch从零开始实战13

Pytorch从零开始实战——ResNet与DenseNet探索 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——ResNet与DenseNet探索环境准备数据集模型选择开始训练可视化总结 环境准备 本文基于Jupyter notebook&#xff0c;使用Python3.8&#xff0c;P…

【学习笔记】JavaScript中的GC算法

1、内存管理 内存&#xff1a;由可读写单元组成&#xff0c;标识一片可操作的空间 管理&#xff1a; 认为的去操作一篇空间的申请、使用和释放 内存管理&#xff1a;开发者主动申请空间、使用空间、释放空间 管理流程&#xff1a; 申请-使用-释放 // 申请 let obj {} //使…