如何以实用的方式使用Docker(第1部分 - 介绍)

这是不常见的情况,对于新引入的概念和技术的早期采纳者,完全困惑,当这些可以从根本上...

Docker

第1部分:术语介绍

前言

对于新引入的概念和技术的早期采用者来说,当这些可以从根本上改变开发和提供服务的方式时,就完全混淆并不罕见。 特别是当大家谈论像Docker这样的东西,以及游戏是如何变化的。 这种混乱发生在我们早点尝试的时候,直接用来测试它们,而不必理解这种新引入的技术的整体概念和背景。

这就是为什么你可能已经放弃了Linux容器的整个趋势,或者是因为你读了一些有争议的文章,来自yea sayers和naysayers。 在第一部分的一系列文章中,我们将尽最大努力,为任何开发人员,系统管理员,Q / A工程师或甚至只需要正确灵感使用Linux容器的爱好者将所有内容放在正确的角度并解决他们的特殊IT问题。

我们将从一开始就对历史事件和概念进行一些必要的描述,然后我将展示如何开始使用Docker容器。 这样,您将能够了解“什么导致容器的创建”,“积木是什么”和“他们如何工作”。


容器怎么样了

多年来,服务器按原样使用,具有单个硬件配置,包含单个操作系统(简称OS)),可在同一台机器上提供数千个网站和一些早期版本的企业软件。

为了完成必要的扩展,公司需要购买新硬件并仔细计划任何新实现的步骤。 在这段时间里,自动化已经很早了,大部分配置都是手工完成的。

虚拟化

然后,虚拟化就是让人们使用相同的硬件服务器,以便为不同目的产生多个虚拟服务器,并分别销售。 这不仅大大降低了服务器硬件所有权的成本,而且还提供了自动化和轻松管理数百个服务器实例的方法。

虚拟化实际上是组装由特殊软件仿真的CPU,RAM,磁盘,网卡等硬件组件。 就像在操作系统中构建一个上面提到的核心组件的PC,并将它们组装起来就像一个真正的PC一样工作。 这样,虚拟PC成为实际PC中的“客人”,其操作系统称为主机。

虚拟化

虽然硬件虚拟化在大约10年前被引入,但是它已经被开发人员和系统管理员广泛使用在各种类型的服务器上,使用自2007年以来内置在Linux内核中的KVM(基于内核的虚拟机)功能。使用英特尔的“VT -x“和AMD的”AMD-V“扩展,可以帮助创建任何数量的虚拟化操作系统(仅限于硬件资源),每个开发人员都可以使用操作系统即可轻松创建多个虚拟机(简称VM),即使使用不同版本的他们。 这样,他们就可以根据所需的操作系统来测试他们的应用程序,而不需要购买全新的钻机或多个钻机。

虚拟化的一大优点就是创建快照的能力。 快照是在精确时间点的虚拟机的状态。 您可以在特定时间将其视为虚拟机的“冻结”状态。 这样,开发人员或sysadmin就可以创建一个虚拟机,安装一个特定的操作系统和他需要的工具,并从整个事情中创建一个快照。 然后,他可以开始测试,配置或任何他需要完成的任务,然后在任何给定的时间立即恢复到以前的快照。

还可以将虚拟机从一台主机迁移到另一台主机,并继续其工作状态,而无需任何特殊配置。 这是因为整个虚拟机实际上是一些通常称为图像的巨大文件。 您可以考虑图像,像您最喜爱的Linux发行版ISO文件。 由于ISO文件包含从实时USB / DVD实际运行整个操作系统的所有必需组件,与虚拟机映像相同,包含操作系统和虚拟硬件组件。

以上所有,创建了一个虚拟专用服务器(VPS)托管公司的整个行业,客户可以立即为任何目的启动服务器的预配置映像。 这些VPS提供商通常在主主机服务器上具有10或20个虚拟机快照,每个客户请求被克隆多次,为他们提供他们需要的虚拟服务器

容器

您可以想像虚拟机是在主机操作系统中运行的整个操作系统。 客户操作系统虽然是隔离的,但它们共享和利用主机的硬件资源。 有时候,有多个客户机操作系统正在运行相同的整个的特定操作系统。

容器与虚拟机。

这种情况为Linux内核开发人员和黑客创造了一个称为轻量级进程虚拟化的概念。 所以,不用使用整个操作系统,它们可以减少虚拟操作系统的“不必要的”组件,以创建它的最小版本。 这导致了LXC(Linux Containers)的创建。

在我们深入研究之前,我们应该提到,轻量级进程虚拟化并不是一件新事物。 Solaris有区域,BSD有监狱,还有其他类似的技术,如OpenVZ。 问题是,当在其他项目中使用相同的基本概念时,他们经常更改其名称或目的。 确实不是都是一样的,但基本原则几乎相同。 他们都希望隔离,部署和创建一次提供软件服务的方式,而无需重新构建一切,每次从下而上的麻烦。

LXC项目与上述虚拟机不同之处在于它是一个操作系统级虚拟化环境,而不是硬件虚拟化环境。 他们都做同样的事情,但LXC通过具有自己的进程和网络空间的虚拟环境提供操作系统级虚拟化,而不是创建一个完整的虚拟机。 因此,LXC虚拟操作系统具有最少的资源需求,并在几秒钟内启动。

如下图所示,左侧的LXC虚拟Ubuntu在默认安装中使用11MB。

LXC与主机

Docker

通常,通过删除操作系统的不必要部分,事情并不会停止。 通过进一步推动轻量级流程虚拟化的边界,各种技术诞生了。 在2013年,dotCloud(一家后来更名为Docker Inc.的公司)的开发人员推出了Docker。

Docker是一个开源引擎,其主要重点是自动化软件容器内的应用程序部署以及Linux上操作系统级虚拟化的自动化。 Docker容器与虚拟机和lxc不同,不需要或包含单独的操作系统。 相反,它依赖于Linux内核的功能并使用资源隔离。

Docker容器由docker图像创建(记住快照)。 您可以将docker容器设想为从iso文件运行的Web应用程序的活动状态。 但是这次我们的例子中的iso相当于docker图像,它只包含应用程序及其依赖关系。

码头计划

Docker的一个很大的特点,我们将在第二部分讨论,是码头文件。 码头文件是包含创建Docker窗图像所需的所有必要步骤的配方。 有几个“准备使用”码头文件,您可以自定义使用它们。

概要

您可以想象,从成熟的服务器到操作系统虚拟化,然后到容器的范围是消除构建,部署和维护整个操作系统的负担,只要它们只是应用层。

有了这个介绍,我们试图向您介绍一些导致我们创建Docker容器的基本事件。 我还试图简化其一些概念,以便您了解各种虚拟化技术之间的差异以及它们适用的位置。

下周将公布的第二部分将以实际的方式展示我们如何安装和使用Docker容器,请继续关注。