如何通过Docker 进行容器编排

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

或许最佳方式是将它们看成饲养宠物与饲养牛。人们会想许多额外措施让他们的宠物活着并保持健康,这与管理员想尽办法认真照看高端服务器一样。但是在农场里,死牛只是被视为生意成本中的一部分,在当今的云世界中也是一样,应用被设计可以容错,一台服务器发生故障并没有什么大不了的。

现代应用编排工具的一个作用是监视虚拟服务器和/或容器情况,确保它们正在正常运行中。当一台服务器出现故障,它们会迅速实例化一台新虚拟机,甚至是一台新容器。整个过程不需要系统管事员介入,因为整个程序是自动化运行的。我们甚至不知道是哪台服务器或是容器(或是两者的组合)在运行我们的应用。

自动化IT长期以来一直是一个梦想,但是如今的工具化正在将这一梦想变为现实。如果我们正在使用云级应用,尤其是扩展后的微服务进行工作,那么这种工具化将十分关键。

针对数据中心的操作系统

这是数据中心操作系统理念发挥作用的地方。单个服务器不再重要,除非它们是计算、存储或网络组件。应用开始依赖于虚拟机或是容器,并成为了主要的管理组件。

我们正在通过管理整个数据中心来替代管理单个服务器,并将它们分解成支持不同应用的必须条件,用以创建开发、测试和部署环境,同时不再需要了解底层硬件情况。这与我们以前用于管理服务器和应用的方式有着很大的变化。它们标志着一个新时代的开始,为特定工作负载配置硬件已经过时了。

编排的一个重要理念是动态部署应用和服务,以利用可用的计算资源。对于分布式自动化计算来说,编排是一个重要的工具。它们通过应用定义和清单来决定主机和工作负载的部署位置,通过管理扩展和确定故障服务器,以让服务能够被正确处理。

谷歌的Kubernetes和Apache的Mesos项目或许是最知名的编排解决方案,但是它们距离那些可用的解决方案还有很大的差距。它们都属于综合性工具,需要我们在技能和资源方面投入大量资金,它们最适合于大规模部署的情况。

作为一种选择,小型企业开始向私有云[注]转型,这些私有云包含了由微软OpenStack和VMware提供的编排功能。尽管如此,目前大量机构仍在测试这种用于交付下一代应用的程序和工具。

通过Docker进行管理

这些工作需要一套工具。这些工具要能够从一台或是两台服务器扩展至一个机架或是两个机架,直至整个数据中心。在这种方案中,Docker将包含Machine、Swarm和Compose等容器自动化工具。

Machine是Docker自动化工具的核心,因为它们能够让安装和配置主机服务器的程序实现自动化。通过Docker的API,我们只需要使用一个命令即可建立一个主机服务器,配置底层Docker Engine,以及安装客户端工具。它们还可以将主机附加至现在的Swarm集群中或是从零开始创建一个新的集群。此外,我们还能够使用由不同云服务提供商提供的容器,通过命令行将主机安装在选定的云环境中。

一旦我们实现了创建容器主机的自动化,开始使用Docker Engine(+微信关注网络世界),那么我们就能够将这些主机整合至使用Docker集群工具的计算框架中。Swarm被设计为通过与标准Docker Engine实例相同的API向容器提供一个可扩展性环境。如果我们已经在开发环境中运行Docker,那么我们就可以通过安装Swarm进行快速扩展,并继续使用现在的开发工具和程序。嵌入式的调度器将把容器分配给单个Docker Engine节点,以支持有助于优化部署的多个不同策略。

创建一个Swarm很容易,就如同在现有集群中增加一个新引擎一样。我们可以使用Machine实现新引擎的自动创建或是与Docker API协作提供一个关于可用节点的索引。由于Swarm可以识别和管理注册过的主机,因此我们的一个选项是通过Docker Hub注册表以简化发现过程。

Compose是一个较为复杂的工具。它们可与YAML协作创建应用摘要,显示一个应用中的多个容器彼此之间的联系。YAML具有重要意义,因为当我们为API查找Swagger 时,它们可让我们访问相同的工具以描述我们的应用。一旦我们为应用创建了一个摘要以及它们的创建方式,我们只需要一行脚本即可启动应用。

保持简洁

Docker编排工具最有意思的地方可能是它们非常简洁。这三个工具都只需要非常简单的命令。通过Jenkins等工具,我们可以很容易地为它们编写脚本,或是在Puppet 或Chef等环境中管理它们。如果以现有的Docker API为基础进行创建,那么它们还可以很容易地管理和控制分布式环境,简化由开发向生产的转型过程。

Docker工具可与Kubernetes等数据中心管理工具及公有云[注]提供的工具协同工作。通过综合运用Machine、Swarm和Compose,在应用由从在单个服务器上进行开发和测试到在Azure或AWS上完整运行云服务的过程中,我们都能够可以与这些应用进行协作。

开发者不需要知道他们正在向哪些东西提供容器。它们看起来像是一个Swarm,即便它们运行在一个云规模的Mesos部署上也是如此,而这种抽象就是云的精髓之所在。


本文作者:范范

来源:51CTO

相关文章
|
4天前
|
存储 虚拟化 数据中心
|
3天前
|
存储 Linux 文件存储
Linux使用Docker部署Traefik容器并实现远程访问管理界面-1
Linux使用Docker部署Traefik容器并实现远程访问管理界面
|
3天前
|
Linux 开发者 Docker
Docker容器化技术详解
【4月更文挑战第30天】Docker,一个开源的容器化平台,助力开发者通过轻量级容器打包应用及依赖,实现跨平台快速部署。核心概念包括:容器(可执行的软件包)、镜像(只读模板)、Dockerfile(构建镜像的指令文件)和仓库(存储镜像的地方)。Docker利用Linux内核功能隔离容器,采用联合文件系统构建镜像。广泛应用包括开发测试一致性、微服务部署、CI/CD以及本地到远程部署。通过安装Docker,编写Dockerfile,构建&运行容器,可实现高效灵活的应用管理。随着容器技术进步,Docker在云计算和DevOps中的角色日益重要。
|
3天前
|
Shell Docker Ruby
3.Docker容器的数据卷
3.Docker容器的数据卷
|
3天前
|
弹性计算 Shell 数据安全/隐私保护
|
3天前
|
弹性计算 Shell 数据安全/隐私保护
自动化构建和部署Docker容器
【4月更文挑战第30天】
7 0
|
4天前
|
Kubernetes 监控 Docker
|
4天前
|
运维 Prometheus 监控
构建高效稳定的Docker容器监控体系
【4月更文挑战第29天】在微服务架构日益普及的当下,Docker作为轻量级容器的代表,被广泛应用于服务部署与管理。然而,随之而来的是复杂化的服务监控问题。本文旨在探讨如何构建一个高效且稳定的Docker容器监控体系,确保服务的高可用性。我们将从监控工具的选择、关键监控指标的确定,以及告警机制的设计等方面进行详细阐述,并提供一系列优化实践,以期为运维人员提供参考和指导。
|
6天前
|
存储 监控 安全
【专栏】Docker Compose:轻松实现容器编排的利器
【4月更文挑战第27天】Docker Compose是款轻量级容器编排工具,通过YAML文件统一管理多容器应用。本文分三部分深入讨论其核心概念(服务、网络、卷和配置)、使用方法及最佳实践。从快速入门到高级特性,包括环境隔离、CI/CD集成、资源管理和安全措施。通过案例分析展示如何构建多服务应用,助力高效容器编排与管理。
|
6天前
|
存储 Kubernetes C++
【专栏】Kubernetes VS Docker Swarm:哪个容器编排工具更适合你?
【4月更文挑战第27天】对比Kubernetes和Docker Swarm:K8s在可扩展性和自动化方面出色,有强大社区支持;Swarm以简易用著称,适合初学者。选择取决于项目需求、团队技能和预期收益。高度复杂项目推荐Kubernetes,快速上手小项目则选Docker Swarm。了解两者特点,助力选取合适容器编排工具。

相关产品

  • 容器服务Kubernetes版