Docker Orchestration... What It Means and Why You Need It (Docker 编配 ...它是什么意思,为什么你会需要它?)

2024-01-19 18:48

本文主要是介绍Docker Orchestration... What It Means and Why You Need It (Docker 编配 ...它是什么意思,为什么你会需要它?),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Docker Orchestration… What It Means and Why You Need It

原文作者:Cloudify Community
原文地址:https://dzone.com/articles/docker-orchestration-what-it
译者微博:@从流域到海域
译者博客:blog.csdn.net/solo95
本文同样刊载于腾讯云+:https://cloud.tencent.com/developer/article/1019149

Docker 编配 …它是什么意思,为什么你会需要它

本文由Yaron Parasol编写

Docker容器是为了帮助快速,可靠地部署应用程序组件或层(tier)而被发明的,其实现方法是创建一个容器,该容器包含可自行部署的应用程序部分以及成功运行它们所需要的中间件和应用程序业务逻辑。例如,Tomcat容器中的Spring应用程序。按照设计,Docker被故意设计为应用程序中独立出来的独立的部分,通常是层中的一层或甚至层中的一个节点。

然而,一个应用程序通常是在其体系中是多层架构的,这意味着存在层与层之间的依赖关系,依赖的本质可以是从网络连接和远程API调用到应用程序层之间的消息交换之间的任何东西。因此,应用程序是一组具有特定配置的不同容器。这就是为什么你需要一种方法来把你的应用程序粘贴在一起。

虽然Docker有一个使用Docker bridge的基本解决方案,但是这个解决方案并不总是首选,尤其是在跨不同主机部署容器时,您需要关注真正的网络设置。

如何使用TOSCA + Cloudify编配Docker。让我们来一探究竟。点这里

那么,orchestrator扮演什么角色呢?
(orchestrator,音乐中指乐器的调配者,这个建议不翻译,或者参考番剧《中二病也要谈恋爱》,翻译成圣调理人(๑•̀ㅂ•́)و✧)

orchestrator将会处理两件事:

  1. 容器创建的时机 - 因为容器需要依赖和顺序创建
  2. 为了允许容器相互通信而进行的对容器的配置 - 为此,orchestrator需要在容器之间传递运行时的某些属性。

作为一个方面的说明:在Docker中,你需要一个特殊的调整,因为你通常不会碰到容器内的配置文件,为了容器保持完好无损,对于这种情况需要一个有趣的解决方法。

一种方法是使用基于YAML的编配方案(orchestration plan)编排应用程序的部署和部署后的自动化过程,这是Cloudify采用的方法。基于TOSCA(云应用程序的拓扑和编配标准),这个编配方案描述了组件及其生命周期,以及组件之间的关系,特别是涉及到复杂的拓扑时。这包括什么与什么相连接,什么host了什么,以及其他这样的考虑。TOSCA能够描述基础架构,以及中间件层和应用层。Cloudify基本上采用这个TOSCA编配方案(在Cloudify中称为blueprint),并使用遍历组件的图(graph)或这个方案的组件并向代理发布命令这样的工作流来实现这个方案。然后创建应用程序组件并将它们粘合在一起。

代理使用被称为插件的扩展(程序),它们是Cloudify配置和各种基础架构即服务(IaaS)以及自动化工具的API之间的适配器。

在我们的例子中,我们创建了一个与Docker API接口的插件。

Docker Cloudify插件介绍

该Cloudify-Docker插件简单直接,它在机器上安装Docker API 终端/服务器,然后使用Docker-Py把容器

的创建,配置和删除结合起来。TOSCA生命周期事件是:

  • Create(创建) - 安装应用程序组件
  • Configure(配置) - 组件的配置
  • Start - 启动/运行组件
  • 还有stop(停止)和(delete)删除 - 关闭和删除

我们从Create开始使用 - 创建一个容器,我们没有在一开始时就去实现配置,并开始运行应用程序。但后来我们意识到,对于具有依赖性的容器,我们需要有运行时的环境属性,比如为了创建容器,我们需要导入相应容器的IP。当我们创建一个app服务器容器时,我们需要端口和数据库容器的IP。因此我们把容器的创建推到了configure eventceng层面上,并且使用了一个基于TOSCA relationship的预配置钩子来在运行时获取相关容器的信息。

将运行时信息公开到具有依赖关系的容器的方法是将它们设置为环境变量。

查看源代码

打印

有疑问?

01. interfaces:

02. cloudify.interfaces.lifecycle:

03. configure:

04. implementation: docker.docker_plugin.tasks.configure

05. inputs:

06. container_config:

07. command: mongod--rest--httpinterface --smallfiles

08. image: dockerfile/mongodb

09. start:

10. implementation: docker.docker_plugin.tasks.run

11. inputs:

12. container_start:

13. port_bindings:

14. 27017: 27017

15. 28017: 28017

Nodecellar 示例

我想通过使用我们的Nodecellar app作为例子来解释这是如何工作的。Nodecellar app由两台主机组成,在这种情况下,Cloudify不创建,只是SSH进入,然后安装代理。一方面,我们有带MongoD进程的MongoD容器。另一方面,我们有带NodeJS和Nodecellar应用程序的Nodecellar容器。Nodecellar容器需要连接到MongoD容器,以在应用程序启动时运行app queris。

最终,orchestrator不应该仅仅局限于软件部署,Docker背后的全部思想是为了保持灵活性,所以我们也希望在自动扩展、自动修复和CD的情况下使用Docker。在下一篇文章中,我们将精确地展示如何将Cloudify与Docker一起用于后期部署场景。

这篇关于Docker Orchestration... What It Means and Why You Need It (Docker 编配 ...它是什么意思,为什么你会需要它?)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/623337

相关文章

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

docker如何删除悬空镜像

《docker如何删除悬空镜像》文章介绍了如何使用Docker命令删除悬空镜像,以提高服务器空间利用率,通过使用dockerimage命令结合filter和awk工具,可以过滤出没有Tag的镜像,并将... 目录docChina编程ker删除悬空镜像前言悬空镜像docker官方提供的方式自定义方式总结docker

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

Maven创建项目中的groupId, artifactId, 和 version的意思

文章目录 groupIdartifactIdversionname groupId 定义:groupId 是 Maven 项目坐标的第一个部分,它通常表示项目的组织或公司的域名反转写法。例如,如果你为公司 example.com 开发软件,groupId 可能是 com.example。作用:groupId 被用来组织和分组相关的 Maven artifacts,这样可以避免

禅道Docker安装包发布

禅道Docker安装包发布 大家好, 禅道Docker安装包发布。 一、下载地址 禅道开源版:   /dl/zentao/docker/docker_zentao.zip  备用下载地址:https://download.csdn.net/download/u013490585/16271485 数据库用户名: root,默认密码: 123456。运行时,可以设置 MYSQL_ROOT_P