首先让我声明,这绝对不是一篇批评 Docker 的文章。我实际上非常喜欢 Docker,并且我认为它是一款杰出的软件,将会取得巨大的成功。但我必须承认,我不确定它是否应该被称为 虚拟化,而业内许多人都在坚持这样称呼它。
现在,在您开始召集虚拟团队,在评论区严厉批评我亵渎神明或异端邪说之前,请听我说完。
首先,我认为,重要的是要认识到,在技术领域,尤其是在前沿技术领域,每个人都很难就大多数词语的通用定义达成一致。在云和虚拟化的语境中尤其如此。一般来说,对我而言,并且就本次讨论的背景而言,虚拟化指的是对实体提供的服务进行抽象,以便可以按照消费实体期望的方式进行消费,而无需考虑提供服务的实体的特性。或者换句话说:虚拟化是以这样一种方式将服务的消费者与服务的提供者隔离开来的行为,从而使双方都可以保持其原生的交互方式。这种抽象可以通过模拟、仿真、转换或其他方式来实现,但关键功能是使某物看起来像另一物,以便可以使用。
例如,虚拟机监控程序允许多个离散的操作系统通过抽象服务器提供的服务(CPU、内存、磁盘等)来使用单个物理服务器,从而使每个操作系统都不知道服务器的真实底层特性。正是 Docker 缺乏的这种关键功能(抽象服务)阻止了我授予其虚拟化的头衔。
你们中的许多人现在可能正在想,“Docker 确实为应用程序提供虚拟化。它为它们虚拟化了操作系统。” 我的回应是恭敬地指出,Docker 实际上并没有抽象或虚拟化任何东西。它是一个软件包,以协作方式管理多个通常是离散的 Linux 功能,以提供给定的功能。Docker,与虚拟机监控程序不同,没有隔离或抽象面向消费者的服务。Docker,并不那么简单,它充当指挥,协调所有各种服务协同工作。甚至可以有理有据地说,Docker 不是提供应用程序使用的服务的必需组件。
现在说了这么多,我应该补充一点,即使我觉得自己是一个相当高级的管理员,我也无法想象手动完成 Docker 执行的任务。由于依赖项过多、对正在使用的所有功能缺乏了解以及管理工具缺乏稳健性,这简直是一项令人望而生畏的任务。对于那些会说“只需编写一个脚本”的人,我会回应“为什么还要这样做,当 Docker 为我们做这件事时?”
Docker 确实,在我看来,是一款很棒的软件。我承认我没有审查过代码,我不是开发人员。如果允许我过度简化,我的工作就是让事情运转起来。Docker 确实做到了这一点,而且似乎以非常高效、逻辑和高效的方式做到了这一点。我对 Docker 的未来以及它编排的功能(或服务)将如何影响组织内的开发、运营和工程团队感到非常兴奋。
7 条评论