为什么我们需要 Docker?
众所周知,Docker是一个可以运行容器的生态系统
我在上一篇文章中已经解释了容器的一些基础知识。
您可以使用以下链接阅读我之前的文章,
让我们先了解为什么我们需要 Docker。
作为软件专业人士,我们的最终目标是以有效的方式向客户交付软件应用程序。
下面解释了正常的软件交付过程步骤。
- 开发人员将开发应用程序并在他们的环境中进行测试。
- 开发者端测试结束后,应用程序将交付到 QA 环境
- 一旦 QA 验证应用程序并且如果一切按预期工作,应用程序将交付到生产环境。
- 如果在 QA 环境中发现任何问题,QA 人员会提出问题供开发团队调查。
要开发应用程序,开发人员需要一个框架。该框架可能具有一些依赖项,例如某些操作系统功能或某些第三方库等。
所以,一旦项目确定下来,通常开发人员会讨论不同框架的可行性和可能的技术。
一旦框架、技术等得到确认,他们将使用所需的框架和依赖项/库来设置开发环境。
然后他们将开始应用程序的开发。
开发完成后,开发团队将在开发环境中测试应用程序。
接下来,应用程序将交付到测试 (QA) 环境。
当 QA 人员开始测试时,他们可能会遇到问题。问题可能不是由于我们的软件错误造成的。
可能还有其他一些事实,例如依赖关系。
某些依赖项在 QA 环境中可能不可用,或者依赖项版本不匹配就是此类问题的示例。
另一种情况是在开发环境中,通过安装其他一些应用程序,某些依赖项可能已经可用。因此,我们的新应用程序将在开发环境中正常运行而不会出现任何问题,但它会在 QA 或生产环境中导致问题。
我们有一种常用且仍在使用的解决方案——Hypervisor(即虚拟机)
我们使用虚拟机管理程序所做的是我们拥有物理硬件并在其上安装主机操作系统。
然后我们将在其上安装 Hypervisor。之后,我们可以在其上安装多个操作系统。
请参考下图。
在这个客户操作系统上,我们可以像普通操作系统一样做任何事情。我们可以安装软件、依赖项、构建应用程序等。
在这种情况下,我们将我们的应用程序作为完整映像交付给 QA 环境,其中包含我们的应用程序、所有依赖项和运行我们应用程序的完整操作系统。
在这里,优点是我们不必担心应用程序运行的环境,因为我们已经提供了运行应用程序所需的一切。
一旦 QA 验证了我们的应用程序,他们将创建映像副本并交付到生产环境,而无需担心生产环境。
简而言之,如果应用程序在我们的环境中运行,它也会在另一个环境中运行。
一切看起来都不错吧?- 是的,Hypervisor 的概念很棒!
但问题是,想想我们正在为不同的应用程序安装多个客户操作系统,所有操作系统都共享相同的硬件。
因此,我们正在浪费 CPU、RAM 等资源。此外,如果我们使用许可版本,我们也会在操作系统和其他应用程序的许可上浪费金钱。
为了解决这些问题, 引入了容器的概念。
容器和管理程序之间的唯一区别是所有容器都共享相同的主机操作系统和硬件。
请参考下图。
正如我们在上图中看到的,这里我们只有主机操作系统。我们正在其上安装 Docker 容器引擎。
然后我们使用 Docker 将多个应用程序作为容器运行。
这种方法将更好地降低成本并提高资源利用率。
我们将在下一篇文章中了解有关 Docker 的更多信息。
谢谢阅读!
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!