第 9 章 生产容器之路 生产容器之路
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
既然我们已经探索了在单个主机上启动容器堆栈的工具,那么我们就需要看看如何在大规模生产环境中实现这一点。在本章中,我们将根据自己的经验,向你展示如何将容器应用到生产环境中。您可能需要根据自己的应用程序和环境来调整这些方法,但这应该能为您提供一个坚实的起点,帮助您从实践角度理解 Docker 理念。
投入生产
将应用程序从构建和配置 到在生产系统上运行,是从零到生产的过程中最容易触雷的步骤之一。这在传统上是很复杂的,但出货容器模式大大简化了这一过程。如果你能想象一下,在集装箱出现之前,把货物装到船上漂洋过海是什么样子,你就会对大多数传统部署系统的样子有所了解。在以前的运输模式中,大小随意的箱子、板条箱、桶和其他各种包装都是人工装船的。然后,还必须有人手动卸载,他要知道哪些部件需要先卸载,这样整堆货物才不会像简易拼图一样倒塌。
海运集装箱改变了这一切:我们现在有了尺寸众所周知的标准化箱子。这些集装箱可以按照合理的顺序进行包装和卸载,而且整组物品会在预期时间内一起到达。航运业建立了非常高效的管理机制。Docker 的部署模式非常类似。所有 Linux 容器都支持相同的外部接口,工具只是将它们投放到它们应该在的服务器上,而无需关心里面装的是什么。
在新模式中,当我们有了应用程序的运行构建后,就不必再编写很多自定义工具来启动部署。如果我们只想将其发送到一台服务器,docker 命令行工具将为我们处理大部分工作。如果我们想将其发送到更多服务器,那么我们就必须从更广泛的容器生态系统中寻找一些更先进的工具。无论哪种情况,在将容器化应用程序投入生产之前,您的应用程序都需要注意一些事情,并考虑一些问题。
在使用 Docker 将应用程序投入生产的过程中,您将遵循一个循序渐进的过程:
-
在本地构建并测试开发箱上的 Docker 镜像。
-
通常从持续集成(CI)或构建系统中构建正式镜像,用于测试和部署。
-
将图像推送到注册表。
-
将 Docker 映像部署到服务器上,然后配置并启动容器。
随着工作流程的发展,您最终会将所有这些步骤整合为一个流畅的工作流程:
-
协调镜像的构建、测试和存储,并将容器部署到生产服务器上。
但故事的内涵远不止于此。在最基本的层面上,制作故事必须包含三方面内容:
-
它必须是一个可重复的过程。每次调用时,它都需要做同样的事情。理想情况下,它能为你的所有应用程序做同样的事情。
-
它需要为您处理配置。您必须能够在特定环境中定义应用程序的配置,然后保证每次部署时都能提供该配置。
-
它必须提供可启动的可执行工件。
要做到这一点,您需要考虑几件事。我们将通过介绍一个框架来帮助您在环境中考虑应用程序。
Docker 在生产环境中的作用
我们已经介绍了 Docker 带来的很多功能 ,也谈到了一些通用的生产策略。在深入研究生产容器之前,我们先来看看 Docker 如何融入传统和更现代的生产环境。如果你要从一个更传统的系统转向 Docker,你可以挑选将哪些部分委托给 Docker、部署工具,或更大的平台(如 Kubernetes 或基于 Cloud 的容器系统),或许你甚至会决定将其留在更传统的基础架构上。我们已经成功地将多个系统从传统部署过渡到了容器化系统,而且有很多优秀的解决方案。但是,了解所需组件以及现代变体和传统变体的构成要素,将有助于您做出正确的选择。
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access