简介

什么是 Docker?

在维基百科中是这样定义 Docker

一个 开放源代码 软件项目,让应用程序布署在 软件容器 下的工作可以自动化进行,借此在 Linux 操作系统上,提供一个额外的软件 抽象层,以及 操作系统层虚拟化 的自动管理机制。

听起来非常棒!简单的说,Docker 是一个工具,它允许开发人员、系统管理员方便的将应用程序部署在沙箱(或者叫容器)中,以便在宿主机的操作系统(即 Linux)上运行。Docker 的主要优点是允许用户将 具有依赖关系的应用打包到用于软件开发的标准化单元 中。与虚拟机不同,容器的资源占用并不高,所以能够更有效地使用底层系统和资源。

什么是容器?

现在行业标准是使用虚拟机(VM)来运行我们的软件应用,虚拟机在操作系统内运行应用程序,而操作系统运行在支持虚拟硬件的服务器上。

虚拟机非常适合为应用提供进程隔离:宿主机操作系统中的问题几乎不会影响到虚拟机中运行的软件,反之亦然。但是这种隔离成本非常高 - 用于客户操作系统虚拟化硬件的计算开销也很大。

容器采用了另一种方式:利用宿主机操作系统的一些底层机制,容器以很小的计算能力提供了虚拟机的大部分隔离。

为何使用容器?

容器提供了一种逻辑打包机制,可以将应用程序从实际运行的环境中抽象出来。这种解耦使得基于容器的应用能够轻松一致的部署,而不用管目标环境是私有数据中心、公共云,甚至是开发人员的笔记本。这样让开发人员能够创建与其他应用隔离的可以预测的环境,而且可以在任何地方运行。

从操作的角度来看,除了可移植性容器之外,还可以对资源进行更细粒度的控制,从而提高基础设施的效率,也提高了计算资源的利用率。

Docker 的谷歌趋势图

正因为这些优点,容器(也就是 Docker)已被广泛采用。谷歌、Facebook、Netflix 和 Salesforce 等公司使用容器来提高大型工程团队的工作效率,并提高计算资源的利用率。实际上,谷歌认为容器消除了对整个数据中心的需求。

这个教程教你什么?

这个教程会手把手带你轻松掌握 Docker。除了揭开 Docker 的神秘面纱之外,还会教你如何在公有云上构建和部署你自己的 Web 应用程序。我们将使用 Amazon Web ServicesEC2 上使用 Elastic BeanstalkElastic Container Service 部署静态网站和两个动态 Web应用程序。即使你之前没有部署经验,在这里也可以开始学习这些内容。