为生产环境准备Docker容器的有关课程

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本文讲的是为生产环境准备Docker容器的有关课程【编者的话】本文为独立顾问James Higginbotham于DZone网站中发布的文章Lessons in Preparing Docker Containers for Production,此文描述了在使用Docker进行生产时需要记住的一些关键点,包括自动化,数据库决策以及编排等方面的重要性。
本文讲的是为生产环境准备Docker容器的有关课程【编者的话】本文为独立顾问James Higginbotham于DZone网站中发布的文章Lessons in Preparing Docker Containers for Production,此文描述了在使用Docker进行生产时需要记住的一些关键点,包括自动化,数据库决策以及编排等方面的重要性。

最近,我花了两个星期,帮助未来的架构师和技术领导者们了解原生云架构。我们在 Realscale 网站上讨论了许多涉及到的概念。

其中讨论的一部分重点是将容器化作为旧版应用程序现代化的战略。部分领导者们决定使用Docker容器去建立他们项目的一部分。在这篇文章中,我将会分享他们在开始这个项目时发现的重要经验和学到的关键教训。

一切自动化

许多的开发者作出的假设是-认为他们的服务器将是运行很长一段时间。但其实他们并没有一个适当的用于恢复的自动化流程,如果他们的Docker主机 -我们以一个在这种情况下的EC2实例来举例,发生故障或终止。这包括存储在本地文件系统,而不是任何数据 远程块或基于文件系统的存储

我们的生产环境的Docker容器需要确保Docker主机在故障的情况下可以被替换并能用上新的实例。这就要求服务器监控和自动化手段来确保可靠的基础设施为我们的生产中的Docker实例提供足够的业务支撑。虽然我倾向于通过使用 Cloud66 来实现,不过一些团队倾向于选择使用其他服务,或使用Docker Swarm或Kubernetes来管理它们。

编排您的容器

你是否认为云服务器是一种存活时间短并且转瞬即逝的资源呢?容器存活的时间通常更短。根据它们的需要,容器一般可以持续存活几秒钟或者几天或更长的时间。这其实应该已被纳入设计和实现代码的方式。如果你的代码或应用程序的配置假定了他们的环境是长期的,又或者他们所依赖的其他服务将会持续存在,那么,这有可能会带来意想不到的灾难。

容器管理和业务流程的解决方案确保了有足够的容器可用,可按需扩展或收缩实例,并可以控制分配给我们的容器以及主机资源(如CPU和内存)。在研讨会期间,我们讨论了像 Cloud 66如何处理 这种没有任何多余的脚本的这样一种方案,帮助他们了解到了选择适合自己的目标架构供应商的会带来的好处。

一些开发人员对于容器存活这一问题认识到的有点晚,所以之前通常这么做他们的内部文件系统。我们来假设部署一个数据库 - 我们用MongoDB来做这次的举例 - 那么数据库必须挂载必要的数据文件和外部存储。否则当容器被销毁时,任何插入的数据也是如此。同样,任何重要文件必须遵循同样的限制约束。

Docker有一个 很好的文档 ,它解释了如何运作的这方面的更多细节。

明智地选择你的数据库

之前写过该篇文章 ,所以就在这里过多地讨论了。那些领导者们会发现他们的数据库平台的选择会正面或负面的影响了他们的基础设施建设和实施的需要。有些团队选择了一个key/value键/值存储例如Redis,他们只是认识到实现一些密钥聚合功能所需的工作量将可以通过选择不同的数据库来实现更好地处理。值得庆幸地是,它有可能是一个小项目并且这个问题在早期就被发现。但其实我见过的项目通常不是这种情况,它最后都花费了相当大的努力来取代最初的选择,更糟地是,那些出现的各种问题动用了许多方法和业务中断去解决。

无服务状态是有戏的,但它不能代表一切,然而。。。

一些领导人决定探讨一个纯粹的无服务器架构。虽然他们能够解决许多使用无服务器方式的现代化需求,但是往往忽略了几件事情。这些事情包括:每个帐户的速率限制,端点和帐户级别使用情况报告,以及内置的细粒度访问控制的完整的API管理解决方案。这些和其他功能可以随着时间的推移和一些代码来克服,但大多数项目团队期望专注于功能,而不是基础设施的建设。

一些领导人选择了混合使用Docker容器和无服务器的方法来部署他们的 API管理层 ,要求服务器终究还是要被管理的。通过选择最佳的容器编排的方式作为我们的解决方案(如前所述),团队可以通过使用Docker和无服务器功能的组合来合并必要的基础设施。

Docker已经适于生产环境了么?

是的,Docker肯定已经适于生产环境了。许多组织都意识到使用Docker所带来的好处,像 GE ADP ,等等。只要确信你肯花时间来计划你的Docker生产环境。为进一步阅读,请查看“ 在生产环境中Docker的9个关键决定 ”。

原文链接:Lessons in Preparing Docker Containers for Production (翻译:薛开成)

===============================================================
译者介绍

薛开成,思杰系统南京研发中心全球实验室基础设施团队高级工程师。

原文发布时间为:2016-12-09

本文作者:薛开成

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:为生产环境准备Docker容器的有关课程

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
3天前
|
存储 监控 安全
【专栏】Docker Compose:轻松实现容器编排的利器
【4月更文挑战第27天】Docker Compose是款轻量级容器编排工具,通过YAML文件统一管理多容器应用。本文分三部分深入讨论其核心概念(服务、网络、卷和配置)、使用方法及最佳实践。从快速入门到高级特性,包括环境隔离、CI/CD集成、资源管理和安全措施。通过案例分析展示如何构建多服务应用,助力高效容器编排与管理。
|
3天前
|
存储 Kubernetes C++
【专栏】Kubernetes VS Docker Swarm:哪个容器编排工具更适合你?
【4月更文挑战第27天】对比Kubernetes和Docker Swarm:K8s在可扩展性和自动化方面出色,有强大社区支持;Swarm以简易用著称,适合初学者。选择取决于项目需求、团队技能和预期收益。高度复杂项目推荐Kubernetes,快速上手小项目则选Docker Swarm。了解两者特点,助力选取合适容器编排工具。
|
3天前
|
Cloud Native Linux 开发者
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
|
1天前
|
存储 虚拟化 数据中心
|
1天前
|
运维 Prometheus 监控
构建高效稳定的Docker容器监控体系
【4月更文挑战第29天】在微服务架构日益普及的当下,Docker作为轻量级容器的代表,被广泛应用于服务部署与管理。然而,随之而来的是复杂化的服务监控问题。本文旨在探讨如何构建一个高效且稳定的Docker容器监控体系,确保服务的高可用性。我们将从监控工具的选择、关键监控指标的确定,以及告警机制的设计等方面进行详细阐述,并提供一系列优化实践,以期为运维人员提供参考和指导。
|
2天前
|
Java Maven Docker
基于docker容器化部署微服务
基于docker容器化部署微服务
5 0
|
2天前
|
网络协议 Java Docker
使用docker编排容器(下)
使用docker编排容器(下)
8 0
|
2天前
|
Java 应用服务中间件 nginx
使用docker编排容器(上)
使用docker编排容器
7 0
|
2天前
|
Prometheus 监控 Cloud Native
构建高效的Docker容器监控体系
【4月更文挑战第28天】 在微服务架构和容器化部署日益普及的今天,对容器进行有效的性能监控成为确保系统稳定性的关键。本文将深入探讨如何构建一个高效的Docker容器监控体系,覆盖从监控指标的选择、数据采集、存储到可视化展示的全流程。我们将分析现有监控工具的优势与局限,并提出一种综合使用Prometheus、Grafana和自定义监控脚本的解决方案,旨在为运维人员提供实时、准确的容器监控数据,帮助快速定位并解决潜在问题。
14 1
|
2天前
|
Linux 网络安全 Docker
【Linux】-docker配置容器并打包成镜像
【Linux】-docker配置容器并打包成镜像