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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 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所带来的好处,像GEADP,等等。只要确信你肯花时间来计划你的Docker生产环境。为进一步阅读,请查看“在生产环境中Docker的9个关键决定”。

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

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

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

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

本文作者:薛开成

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

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

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
2月前
|
关系型数据库 MySQL Nacos
生产环境下的终极指南:在生产环境部署 Nacos 集群和高可用 MySQL 使用 Docker
生产环境下的终极指南:在生产环境部署 Nacos 集群和高可用 MySQL 使用 Docker
66 0
|
4月前
|
关系型数据库 MySQL 应用服务中间件
生产环境部署与协同开发 Docker(二)
生产环境部署与协同开发 Docker(二)
|
4月前
|
存储 Linux 虚拟化
生产环境部署与协同开发 Docker(一)
生产环境部署与协同开发 Docker(一)
|
5月前
|
Kubernetes 负载均衡 网络协议
如何在生产环境中使用 Docker Swarm 调度容器?
随着我们的业务规模越来越大,我们的容器规模也逐渐增大时,数量庞大的容器管理将给我们带来许多挑战。Docker 官方为了解决多容器管理的问题推出了 Docker Swarm ,我们可以用它来管理规模更大的容器集群。
68 0
|
5月前
|
存储 Ubuntu Linux
docker文件存储驱动:AUFS 文件系统原理及生产环境的最佳配置
docker文件存储驱动:AUFS 文件系统原理及生产环境的最佳配置
95 0
|
Docker 容器 API
Docker系列教程27-在生产环境中使用Docker Compose
编者按:这是一篇翻译,原文详见:https://docs.docker.com/compose/production/ 译文原文:http://www.itmuch.com/docker/27-docker-compose-in-production/,转载请说明出处。
1477 0
|
存储 安全 测试技术
内置编排工具且适用于生产环境的Docker 1.12 GA了!
本文讲的是内置编排工具且适用于生产环境的Docker 1.12 GA了!【编者的话】对于Docker来说,内置适用于生产环境的编排工具是件大事情。本文介绍了该内嵌编排工具的拓扑机构以及管理节点与工作节点之间通信的协议,并对该版本的内容进行总结,分别为容错、规模与性能、安全。
1092 0
|
存储 关系型数据库 数据库
生产环境中Docker的持久化存储模式
本文讲的是生产环境中Docker的持久化存储模式【编者的话】在生产环境中使用Docker实现持久化存储一直是业界的热点问题,本文从到配置文件、机密材料、数据库、共享数据等方面做了些探讨,文中也谈到了一些需要避免的问题以及尽量将应用设计为无状态服务的原则。
2350 0
相关产品
容器镜像服务
容器服务Kubernetes版
推荐文章
更多