什么是 stack?- 每天5分钟玩转 Docker 容器技术(111)

简介:

什么是 stack ?
在回答这个问题之前我们先回忆一下前面部署 WordPress 应用的过程:

  1. 首先创建 secret。

  2. 然后创建 MySQL service,这是 WordPress 依赖的服务。

  3. 最后创建 WordPress service。

也就是说,这个应用包含了两个 service:MySQL 和 WordPress,它们之间有明确的依赖关系,必须先启动 MySQL。

为了保证这个依赖关系,我们控制了 docker secret 和 docker service 命令的执行顺序,只不过这个过程是手工完成的。

假如我们需要频繁地在不同环境中部署 WordPress 应用,如果每次都手工执行效率就太低了,而且容易出错。这是自动化的一个好机会,首先我们能想到的就是把这个过程写成脚本,大概内容如下:

563.png

稍微复杂一点的是第三步,通过 if 判断 MySQL service 是否运行,如果是,则运行 WordPress service,否则通过 while 继续等待,直到 MySQL 运行。

这个脚本大体上能够工作,实现了自动化,但有两个缺点:

  1. 目前只有两个 service,还比较简单。现在的应用通常都包含多个 service,特别是采用 microservices 架构的应用,几十个 service 是很正常的。用 shell 脚本启动和管理如此多的 service 将是一件非常有挑战的任务。

  2. 用 while 和 if 维护 service 之间的依赖关系也是很有挑战的,容易出错。而且如何判断 service 正常运行也不是件容易的事,脚本中只简单检查了 service 是否存在,并没有考虑 service 的实际运行状态。

我们希望有一种更高效和可靠的方法来部署基于 service 的应用,这就是 stack。

stack 包含一系列 service,这些 service 组成了应用。stack 通过一个 YAML 文件定义每个 service,并描述 service 使用的资源和各种依赖。

WordPress 的 stack 版本

如果将前面 WordPress 用 stack 来定义,YAML 文件可以是这样:

562.png

YAML 是一种阅读性很强的文本格式,上面这个 stack 中定义了三种资源:service、secret 和 volume。

① services 定义了两个 service:db 和 wordpress

② secrets 定义了两个 secret:db_password 和 db_root_password,在 service db 和 wordpress 的定义中引用了这两个 secret。

③ volumes 定义了一个 volume:db_data,service db 使用了此 volume。

④ wordpress 通过 depends_on 指定自己依赖 db 这个 service。Docker 会保证当 db 正常运行后再启动 wordpress

可以在 YAML 中定义的元素远远不止这里看到的这几个,完整列表和使用方法可参考文档 https://docs.docker.com/compose/compose-file/

stack 的 YAML 有了,下一节我们学习 stack 的相关操作。 

书籍:

1.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html

2.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html




本文转自CloudMan6 51CTO博客,原文链接:http://blog.51cto.com/cloudman/2054990
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
xltd文件怎么打开?教你xltd格式文件打开方法
xltd文件怎么打开?教你xltd格式文件打开方法
2776 0
|
4月前
|
数据采集 缓存 JSON
GitHub 开源爆款工具|MediaCrawler:程序员零门槛采集抖音/小红书/B站等社交评论,30K star 背后的场景实战揭秘!
MediaCrawler 是一个支持多平台的社交媒体数据爬虫工具,覆盖小红书、抖音、B站等主流平台,提供关键词/ID爬取、评论采集、登录态缓存、代理池等功能,结合 Playwright 实现浏览器模拟,降低逆向难度,适合内容运营、数据分析等场景,开源免费,使用简便。
1311 0
|
人工智能 安全 量子技术
大疆DJI无人机等你来拿,蚂蚁集团agentUniverse 多智能体框架有奖征文
agentUniverse有奖征文活动来啦!分享agentUniverse的实践经验、亦或是剖析市面上各路智能体技术理念、对比开源框架的洞见,都有机会获得大疆无人机!
大疆DJI无人机等你来拿,蚂蚁集团agentUniverse 多智能体框架有奖征文
|
存储 自然语言处理 安全
安全小课堂丨什么是暴力破解?如何防止暴力破解
暴力破解是通过尝试所有可能的密码组合来解密,基于字符集合、有限密码长度和可预测性假设。黑客利用此方法获取未经授权的访问,如入侵系统或账户,可能为了利润、数据盗窃、恶意软件传播等目的。常见的攻击类型包括简单暴力、字典式、混合、反向和撞库。防御措施包括使用复杂密码、双因素认证、限制登录尝试和利用密码管理器。加密、加盐和实时监控也能增强安全性。
|
机器学习/深度学习 人工智能 Ubuntu
|
安全 搜索推荐 Android开发
安卓与iOS:两大操作系统的比较
本文将深入探讨安卓和iOS两大操作系统的差异,包括它们的设计理念、用户界面、应用生态以及安全性等方面。通过对比分析,我们可以更好地理解这两个系统各自的优势和不足,从而为用户在选择手机时提供一些参考。
|
网络协议 算法 数据库
OSPF中的骨干区域详解
OSPF中的骨干区域详解
761 0
|
Oracle 关系型数据库 数据库
|
网络架构 架构师 网络协议
《IP组播(第1卷)》一导读
本书包含了基本IP组播原理和路由技术,尤其是Cisco路由器和交换机使用的组播技术,其中切合实际地讨论了 IP 组播网络的常见特性、部署模型和实战经验,之后讨论了 Cisco IP组播网络在实施和排错时使用的命令和方法。
2235 0
|
对象存储 存储 分布式计算
JindoFS: 云上大数据的高性能数据湖存储方案
JindoFS 是EMR打造的高性能大数据存储服务,可以为不同的计算引擎提供不同的存储服务,可以根据应用的场景来选择不同的存储模式。在2019杭州云栖大会大数据生态专场,阿里巴巴计算平台事业部EMR团队技术专家殳鑫鑫和Intel大数据团队软件开发经理徐铖共同向大家分享了云上大数据的高性能数据湖存储方案JindoFS的产生背景、架构以及与Intel DCPM的性能评测。
16961 58
JindoFS: 云上大数据的高性能数据湖存储方案