第 2 章 Docker 全景
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
在深入了解 Docker 的配置和安装之前,有必要进行一次广泛的调查,以解释 Docker 是什么以及它能带来什么。这是一项强大的技术,但其核心并不复杂。在本章中,我们将大致介绍 Docker 和 Linux 容器的工作原理、它们的强大之处,以及你可能会使用它们的一些原因。如果你正在阅读这篇文章,那么你可能已经有了使用容器的理由,但在开始使用之前先加深一下理解也无妨。
别担心,这一章不会耽误你太长时间。在下一章中,我们将直接进入在系统上安装和运行 Docker 的阶段。
简化流程
因为 Docker 是一款软件, ,所以如果采用和实施得好,它也能对公司和团队流程产生很大的积极影响,这一点可能并不明显。因此,让我们深入了解一下 Docker 和 Linux 容器如何同时简化工作流程和沟通。这通常要从部署故事说起。传统上,将应用程序部署到生产环境的周期通常如下所示(如图 2-1 所示):
-
应用程序开发人员向运行工程师申请资源。
-
提供资源并将其移交给开发人员。
-
开发人员编写部署脚本并将其工具化。
-
运维工程师和开发人员会反复调整部署。
-
开发人员会发现其他应用程序依赖项。
-
运行工程师负责安装额外的要求。
-
重复步骤 4 至 6n次。
-
应用程序已部署。
图 2-1. 传统的部署工作流程(不含 Docker)
我们的经验表明,如果按照传统流程,将一个全新的应用程序部署到生产中,对于一个复杂的新系统来说,可能需要一周的时间。这样的工作效率并不高,即使 DevOps 实践能够缓解许多障碍,但往往仍需要大量的努力和团队间的沟通。这个过程既具有技术挑战性,又成本高昂,更糟糕的是,它可能会限制开发团队未来的创新。如果部署新软件既困难又耗时,还需要依赖其他团队的资源,那么开发人员可能会将所有内容都构建到现有的应用程序中,以避免遭受新部署的惩罚,更有甚者,他们可能会干脆避免解决需要新开发工作的问题。
像Heroku这样的 "推送部署 "系统 向开发人员展示了,如果你能控制自己的应用程序和大部分依赖关系,世界会变成什么样。在与开发人员讨论部署问题时,他们经常会提到 Heroku 或类似系统的便捷性。如果你是一名运维工程师,你可能听过这样的抱怨:与 Heroku 这样建立在 Linux 容器技术之上的 "按钮式 "解决方案相比,你的内部系统要慢得多。
Heroku 是一个完整的环境,而不仅仅是一个容器引擎。虽然 Docker 并没有试图成为 Heroku 所包含的一切,但它提供了明确的责任分离和依赖关系封装,从而同样提高了工作效率。Docker 还允许比 Heroku 更精细的控制,开发人员可以控制一切,小到与应用程序一起发布的确切文件和软件包版本。建立在 Docker 基础上的一些工具和协调器(如 Kubernetes、Docker Swarm 模式和 Mesos)旨在复制 Heroku 等系统的简易性。但是,即使这些平台对 Docker 进行了更多包装,以提供能力更强、更复杂的环境,但只使用 Docker 的简单平台仍能提供所有核心流程优势,而不会增加较大系统的复杂性。
作为一家公司,Docker ...
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