Docker Stack管理应用

docker stack常用命令 Docker Stack管理swarm堆栈与Swarm协调器配合使用,是Docker Swarm环境中用于管理一组相关服务的工具。它使得在Swarm集群中部署、管理和扩展一组相互关联的服务变得简单。主要用于定义和编排容器化应用的多个服务。 阅读详情

Stack 是一组相关联的服务和基础设施,需要进行统一的部署和管理。虽然这句话里充斥着术语,但仍提醒我们 Stack 是由普通的 Docker 资源构建而来:网络、卷、密钥、服务等。

这意味着可以通过普通的 Docker 命令对其进行查看和重新配置,例如 docker network、docker volume、docker secret、docker service 等。

在此前提之下,通过 docker service 命令来管理 Stack 中某个服务是可行的。一个简单的例子是通过 docker service scale 命令来扩充 appserver 服务的副本数。但是,这并不是推荐的方式!

推荐方式是通过声明式方式修改,即将 Stack 文件作为配置的唯一声明。这样,所有 Stack 相关的改动都需要体现在 Stack 文件中,然后更新重新部署应用所需的 Stack 文件。

下面是一个简单例子,阐述了为什么通过命令修改的方式不好(通过 CLI 进行变更)。

假设读者已经部署了一个 Stack,采用的 Stack 文件是《Docker Stack》一 节中从 GitHub 复制的仓库中的 docker-stack.yml。这意味着目前 appserver 服务有两个副本。如果通过 docker service scale 命令将副本修改为 4 个,当前运行的集群会有 4 个副本,但是 Stack 文件中仍然是两个。

但是,假设通过修改 Stack 文件对 Stack 做了某些改动,然后通过 docker stack deploy 命令进行滚动部署。这会导致 appserver 服务副本数被回滚到两个,因为 Stack 文件就是这么定义的。因此,推荐对 Stack 所有的变更都通过修改 Stack 文件来进行,并且将该文件放到一个合适的版本控制系统当中。

一起来回顾对Stack进行两个声明式修改的过程。目标是进行如下改动。

增加 appserver 副本数,数量为 2~10。将 visualizer 服务的优雅停止时间增加到 2min。修改 docker-stack.yml 文件,更新两个值:services.appserver.deploy.replicas=10和services.visualizer.stop_grace_period=2m。

目前,Stack 文件中的内容如下。

<Snip>
appserver:
image: dockersamples/atsea_app
networks:
- front-tier
- back-tier
- payment
deploy:
replicas: 10 <<Updated value
<Snip>
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8001:8080"
stop_grace_period: 2m <<Updated value
<Snip

保存文件并重新部署应用。

$ docker stack deploy -c docker-stack.yml seastack
Updating service seastack_reverse_proxy (id: z4crmmrz7zi83o0721heohsku)
Updating service seastack_database (id: 3vvpkgunetxaatbvyqxfic115)
Updating service seastack_appserver (id: ljht639w33dhv0dmht1q6mueh)
Updating service seastack_visualizer (id: rbwoyuciglre01hsm5fviabjf)
Updating service seastack_payment_gateway (id: w4gsdxfnb5gofwtvmdiooqvxs)

以上重新部署应用的方式,只会更新存在变更的部分。

运行 docker stack ps 命令来确认 appserver 副本数量确实增加。

$ docker stack ps seastack
NAME NODE DESIRED STATE CURRENT STATE
seastack_visualizer.1 mgr-1 Running Running 1 second ago
seastack_visualizer.1 mgr-1 Shutdown Shutdown 3 seconds ago
seastack_appserver.1 wrk-2 Running Running 24 minutes ago
seastack_appserver.2 wrk-1 Running Running 24 minutes ago
seastack_appserver.3 wrk-2 Running Running 1 second ago
seastack_appserver.4 wrk-1 Running Running 1 second ago
seastack_appserver.5 wrk-2 Running Running 1 second ago
seastack_appserver.6 wrk-1 Running Starting 7 seconds ago
seastack_appserver.7 wrk-2 Running Running 1 second ago
seastack_appserver.8 wrk-1 Running Starting 7 seconds ago
seastack_appserver.9 wrk-2 Running Running 1 second ago
seastack_appserver.10 wrk-1 Running Starting 7 seconds ago

输出内容有所裁剪,只展示了受变更影响的服务。

注意关于 visualizer 服务有两行内容。其中一行表示某个副本在 3s 前停止,另一行表示新副本已经运行了 1s。这是因为刚才对 visualizer 服务作了修改,所以 Swarm 集群终止了正在运行的副本,并且启动了新的副本,新副本中更新了 stop_grace_period 的值。

还需要注意的是,appserver 服务目前拥有 10 个副本,但不同副本的“CURRENT STATE”一列状态并不相同:有些处于 running 状态,而有些仍在 starting 状态。

经过足够的时间,集群的状态会完成收敛,期望状态和当前状态就会保持一致。在那时,集群中实际部署和观察到的状态,就会跟 Stack 文件中定义的内容完全一致。

所有应用 /Stack 都应采用该方式进行更新。所有的变更都应该通过 Stack 文件进行声明,然后通过 docker stack deploy 进行部署。

正确的删除某个 Stack 方式是通过 docker stack rm 命令。一定要谨慎!删除 Stack 不会进行二次确认。

$ docker stack rm seastack
Removing service seastack_appserver
Removing service seastack_database
Removing service seastack_payment_gateway
Removing service seastack_reverse_proxy
Removing service seastack_visualizer
Removing network seastack_front-tier
Removing network seastack_payment
Removing network seastack_default
Removing network seastack_back-tier

注意:网络和服务已经删除,但是密钥并没有。这是因为密钥是在 Stack 部署前就创建并存在了。在 Stack 最上层结构中定义的卷同样不会被 docker stack rm 命令删除。这是因为卷的设计初衷是保存持久化数据,其生命周期独立于容器、服务以及 Stack 之外。

使用 Docker Swarm(集群) 和Docker Stack(堆栈)部署容器化应用 Docker Stack(堆栈) 是在 Swarm 上管理服务堆栈的工具。而在上面文章 中介绍的 Docker Swarm 只能实现对单个服务的简单部署,于是就引出了Docker Stack。上面我们介绍到docker-compose:可以在一台机器上使用docker-compose.yml轻松部署多个服务(如nginx,php,mysql)docker swarm:将一个服务部署至多台机器(如nginx,部署到机器1,机器2,机器3) 阅读详情

相关推荐

Docker实验(十二)Swarm管理Docker集群与Docker Stack的简单搭建

一.概念 Swarm 是 Docker 公司在 2014 年 12 月初发布的一套较为简单的工具,用来管理 Docker 集群,它将一群 Docker 宿主机变成一个单一的,虚拟的主机。 Swarm 使用标准的 Docker API接口作为其前端访问入口,换言之,各种形式的 Docker Client(docker client in go,docker_py,docker 等)均可以直接...

qq_39376481的博客 775

容器技术—docker stack

在之前的几篇文章中,我们介绍了Docker Compose,它是用来进行一个完整的应用程序相互依赖的多个容器的编排的,但是缺点是不能在分布式多机器上使用;我们也介绍了Docker swarm,它构建了docker集群,并且可以通过docker service在不同集群节点上运行容器服务,但是缺点是不能同时编排多个服务。但是在实际的生产开发中,我们一个完整的应用需要的服务往往不止一个,通过docker service 命令来部署的话会很麻烦,所以这里要讲一下 Docker Stack,它用于向swarm集群部

weixin_37648525的博客 9950

六、Docker Swarm、Docker Stack和Portainer的使用

六、Docker Swarm、Docker Stack和Portainer的使用

funfan的博客 2243

docker操作指令

docker login #登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub。docker logout #登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub。docker node ps #列出在一个或多个节点上运行的任务,默认为当前节点。docker node demote #从群集(swarm)管理器中降级一个或多个节点。此命令必须针对管理器节点。

m0_63857115的博客 131

七、清除docker环境中服务、镜像、容器、挂载卷、网络

七、清除docker环境中服务、镜像、容器、挂载卷、网络

funfan的博客 3583

CTF实战:Wireshark数据包分析从入门到精通(附经典题型解析)

本文详细介绍了Wireshark在CTF比赛中的数据包分析技巧,从基础抓包到高级协议解析,涵盖HTTP流量分析、USB键盘数据还原等实战案例。通过经典题型解析,帮助读者掌握精准过滤、文件提取等核心技能,提升CTF竞赛中的网络流量分析能力。

pz890123的博客 586

30、Docker Stack

Stack 能够在单个声明文件中定义复杂的多服务应用。Stack 还提供了简单的方式来部署应用并管理其完整的生命周期:初始化部署 -> 健康检查 -> 扩容 -> 更新 -> 回滚,以及其他功能!在 Compose 文件中定义应用,然后通过 docker stack deploy 命令完成部署和管理。Stack 是基于 Docker Swarm 之上来完成应用的部署。安全等高级特性,其实都是来自 Swarm。Docker 适用于开发和测试。Docker Stack 则适用于大规模场景和生产环境。

乄辰__qq__2791629529 的博客 1569

Unity集成抖音小游戏:从IL2CPP配置到SDK接入全流程解析

本文详细解析了使用Unity开发抖音小游戏的完整流程。从关键的IL2CPP编译后端配置、PlayerSettings设置,到StarkSDK的接入与资源优化(如AutoStreaming),再到激励视频广告、录屏分享等核心功能的代码实现,提供了从环境准备到打包上传的全方位实战指南,帮助开发者高效完成技术适配。

weixin_27943395的博客 689

Docker Swarm、Docker Stack和Portainer的使用

Docker Swarm 是 Docker 的原生集群管理和编排工具,允许您将多个 Docker 主机组合成一个虚拟的 Docker 主机来管理和部署容器。Docker Stack 用于在 Swarm 集群上管理多容器应用。它基于 Compose 文件定义应用,并支持复杂的多服务部署。Portainer 是一个轻量级的 Docker 管理 UI,支持 Docker 和 Docker Swarm。它提供了直观的界面来管理容器、镜像、网络和卷。

kaikaile1995的博客 537

图像特征(一)——颜色特征(颜色直方图,颜色矩,颜色集,颜色聚合向量和颜色相关图)

本文主要是为了更好地理解图像特征,理解各方法的原理。转载请注明出处https://mp.youkuaiyun.com/console/editor/html/105090183 图像模式识别的一般步骤为:输入图像--图像预处理--特征提取--特征选择--图像分类--输出结果。 图像特征主要有:颜色特征、形状特征、纹理特征和空间关系特征。 本文主要介绍颜色特征,并给出matlab上实现的demo。 颜...

gloria_iris的博客 3万+

基于立创开源ESP32步进电机驱动板硬件设计与优化实践

本文详细介绍了基于立创开源平台的ESP32步进电机驱动板硬件设计与优化实践。重点解析了ESP32-PICO-D4与A4950驱动芯片的选型搭配、电源电路噪声隔离、PCB布局布线技巧以及保护电路设计,为开发者提供了从原理图到PCB的完整优化方案,有效提升驱动板的性能与稳定性。

7z8x2c4v6b9的博客 645

docker stack使用

1.docker stack解决什么问题? docker stack 相当于 docker-compose和docker swarm相结合,容器编排集群部署 2.使用方法 1.先创建两个简单springboot项目(java计数器) test1和test2,分别创建对应的Dockerfile文件 test1 @RestController public class HelloController { @Autowired private StringRedisTemplate redis

Erica_java的博客 791

从零开始玩转机械臂:用Matlab+Robotics Toolbox实现四自由度机械臂运动仿真

本文详细介绍了如何利用Matlab及其Robotics Toolbox工具箱,从零开始构建并仿真一个四自由度机械臂。通过D-H参数建模、正向运动学验证、交互式操控以及轨迹规划等实践步骤,帮助初学者在虚拟环境中直观理解机器人运动学核心概念,为后续硬件实现奠定坚实基础。

weixin_29055699的博客 324

使用Docker Stack部署应用

如果了解Docker Compose,就会发现Docker Stack非常简单。事实上在许多方面,Stack一直是期望的Compose——完全集成到Docker中,并能够管理应用的整个生命周期。 从体系结构上来讲,Stack位于Docker应用层级的最顶端。Stack基于服务进行构建,而服务又基于容器,如图14.1所示。 图14.1 AtSea商店架构图 接下来的章节分为如下几部分。 简单应用。 深入分析Stack文件。 部署应用。 管理应用。 14.2.1 简单应用 本章后续的内容会一

人邮异步社区 2385

Wazuh部署记录

Wazuh是一个免费的开源安全平台,统一了XDR和SIEM功能。它可以保护内部部署、虚拟化、容器化和基于云的环境中的工作负载。Wazuh帮助组织和个人保护其数据资产免受安全威胁。它被全球数千个组织广泛使用,从小型企业到大型企业。443:仪表盘界面访问端口1515:探针连接服务器端口1514:探针回传信息端口以上3个端口必须打开防火墙。

墨痕诉清风的博客 1557

《大数据最全面试题-Offer直通车》目录

做好这些不用担心试用期不通过:程序员入职新公司如何快速上手项目本人遇到大数据面试题和参考答案(超过1万字精华版)大数据面试英文自我介绍参考(万字长文)大数据运维应用场景面试题汇总及参考答案(持续更新)万字数据仓库面试题及参考答案数据仓库数据质量监控和处理方法最佳实践数据仓库建模方法万字详解Doris的3种数据模型详解和数据仓库每一层的模型选用大数据面试临阵磨枪不知看什么?看这份心理就有底了-大数据常用技术栈常见面试100道题最全Hive面试题2024年(2万字详解)Elasticsearch 面试题及参考答

大模型大数据攻城狮的专栏 2637

Docker之单多/机容器管理

  Compose是用于定义和运行多容器Docker应用程序的工具。通过Compose,您可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务。 Docker-Compose 安装: sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-c...

吴振照 1007

Windows 11 安装 JDK 25:下载、安装、配置环境变量、验证

本文详细介绍了在 Windows 11 系统上安装 JDK 25 的完整流程,包括从 Oracle 官网下载压缩包、解压至自定义目录、配置 JAVA_HOME 与 Path 环境变量,并验证安装是否成功。文章推荐使用 ZIP 压缩包而非 EXE 安装程序,以实现绿色便携、多版本共存和灵活管理。最后通过一个使用 Java 25 新特性的示例程序,验证 JDK 的编译与运行环境。

寒水馨 · 轻量级技术文档 · hanshuixin.org 7658

视频教程-Docker Swarm企业应用容器集群管理平台-Docker/K8S

Docker Swarm企业应用容器集群管理平台 七年项目经验,专注于网络/...

weixin_30797779的博客 296

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

如果你还没玩过Docker Stack管理服务,你已经out了,(送Portainer集群管理教程)

我们上面使用swarm部署服务,单个服务还好,如果很多个服务怎么来解决呢,这里就用到了Docker Stack管理服务。 ​ 在上面我们学会了如何配置一个swarm集群,并且知道如何在swarm集群上部署应用,现在,我们开始了解Docker层级关系中的最高一个层级——stack。一个stack就是一组有关联的服务的组合,可以编排在一起,一起管理。 ​ 单机模式下,我们可以使用 Docker-Compose来编排多个服务,而 Docker Swarm 只能实现对单个服务的简单部

博学谷狂野架构师的博客 1797

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Docker Stack 学习笔记

一、简介 Docker Stack 是为了解决大规模场景下的多服务部署和管理,提供了期望状态,滚动升级,简单易用,扩缩容,健康检查等特性,并且都封装在一个声明式模型当中。 Docker Stack 部署应用的生命周期:初始化部署 > 健康检查 > 扩容 > 更新 > 回滚。 使用单一声明式文件即可完成部署,即只需要docker-stack.yml文件,使用docker stack deploy命令即可完成部署。 stack 文件其实就是 Docker compose 文件,唯

GSON的博客 1627

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Docker-Docker Compose and Docker Swarm(六)

06 Docker Compose 官网:https://docs.docker.com/compose/ 6.1 业务背景 6.2 Docker传统方式实现 6.2.1 写Python代码&build image (1)创建文件夹 mkdir -p /tmp/composetest cd /tmp/composetest (2)创建app.py文件,写业务内容 import...

邢宇超的博客 512

【监控】【Nginx】使用 Docker 部署 ELK Stack 监控 Nginx

用于存储和搜索日志数据。Logstash:用于处理和转发日志数据。Kibana:用于可视化和分析数据。通过将 Nginx 日志发送到 ELK Stack,用户可以实时监控网站的访问情况和性能。通过 Docker 部署 ELK Stack 来监控 Nginx,可以简化环境的配置和管理。使用 Filebeat 作为日志收集工具,可以轻松将 Nginx 日志发送到 Logstash,并利用 Kibana 实现数据的可视化。

人生苦短,睡觉要紧,睡醒再说 1383

『中级篇』Docker-Stack部署投票应用(50)

原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!原文链接地址:『中级篇』Docker-Stack部署投票应用(50) 之前用docker-compose创建过投票应用,现在通过docker-stack来创建多机的部署。源码:https://github.com/limingios/docker/tree/master/No.5/labs/wordpress docker-comp...

weixin_33830216的博客 179

stack 的优势 - 每天5分钟玩转 Docker 容器技术(113)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34162629的博客 95
上一篇: Docker Swarm模式下Docker Stack部署应用
下一篇: Docker Stack命令
咖猫
博客等级 码龄18年 641粉丝 160原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值