什么是 Docker?

已完成

在开始 Docker 容器快速导览之前,先了解我们的团队如何开发和部署应用程序。 我们还将简要介绍团队所面临的一些挑战。

在公司开发和管理应用程序的过程中,通常涉及一个或多个团队。 开发团队创建软件,运营团队负责部署这些应用程序。 此外,运营团队还负责管理应用程序托管基础结构。

例如,假设我们要开发一个订单跟踪门户,供公司的各个专卖店使用。 在应用的开发和发布过程中,将由多个环境托管我们的应用程序。 首先,开发团队在开发环境中开发和测试软件。 然后,会将该软件部署到质量保证 (QA) 环境、预生产环境和最终生产环境。

在上述场景中,我们需要考虑几项挑战:

  • 管理托管环境

    这些不同的环境都需要软件和硬件管理。 必须确保每个环境中已安装的软件和已配置的硬件相同。 此外,还需要以一致且易于复制的方式配置每个环境的网络访问、数据存储和安全性等方面。

  • 软件交付的连续性

    将应用程序部署到环境的过程必须始终一致。 每个部署包都必须包含所有系统包、二进制文件、库、配置文件以及确保应用程序功能完备的其他项。 此外,还需要确保所有这些依赖项都与软件版本和体系结构相匹配。

  • 高效使用硬件

    每个已部署应用程序都必须通过与在同一硬件上运行的其他应用程序隔离的方式运行。 我们的目标是在每个服务器上运行多个应用程序以充分利用资源,并使这些应用程序不会相互影响。

  • 应用程序可移植性

    应用程序可移植性不可或缺,有多种原因。 托管环境可能出现故障,或者我们可能需要横向扩展应用程序。 在这两种情况下,可能都需要将软件重新部署到新环境。 我们想要将软件从一个主机移动到另一个主机,即使底层基础结构不同。 此类移动需要尽量快速地完成,以便为客户减少停机时间。

在查看有助于解决这些挑战的 Docker 功能之前,我们将讨论几个概念,并大致了解 Docker 体系结构。

什么是容器?

容器是一种松散隔离的环境,可用于生成和运行软件包。 这些软件包包括在任何计算环境中快速可靠地运行应用程序所需的代码和所有依赖项。 我们将这些包称为容器映像。

容器映像是我们用于分发应用程序的单位。

什么是软件容器化?

软件容器化是一种操作系统虚拟化方法,用于在不使用虚拟机 (VM) 的情况下部署和运行容器。 容器可以在物理硬件、云、VM 和多个操作系统上运行。

什么是 Docker?

Docker 是一个用于开发、交付和运行容器的容器化平台。 Docker 不使用虚拟机监控程序,如果要开发和测试应用程序,可以在台式机或笔记本电脑上运行 Docker。 桌面版 Docker 支持 Linux、Windows 和 macOS。 对于生产系统,Docker 适用于服务器环境,包括 Linux 的多种变体和 Microsoft Windows Server 2016 及更高版本。 许多云(包括 Azure)都支持 Docker。

Docker 体系结构

Docker 平台包含多个用于生成、运行和管理容器化应用程序的组件。

Docker 引擎

Docker 引擎包含配置为客户端-服务器实现的多个组件,其中,客户端和服务器在同一主机上同时运行。 客户端使用 REST API 与服务器通信,该 API 还让客户端能够与远程服务器实例通信。

Diagram showing a high-level overview of the Docker architecture.

而另一些箭头显示了 Docker Server、正在运行的容器和存储的容器映像之间的通信。 这些箭头指出 Docker Server 如何加载存储的容器映像以及管理正在运行的容器。

Docker 客户端

Docker 客户端有两种替代选项:名为 docker 的命令行应用程序或名为 Docker Desktop 的基于图形用户界面 (GUI) 的应用程序。 CLI 和 Docker Desktop 均与 Docker 服务器交互。 来自 CLI 或 Docker Desktop 的 docker 命令使用 Docker REST API 将指令发送到本地或远程服务器,并作为用于管理容器的主要接口。

Docker 服务器

Docker 服务器是一个名为 dockerd 的守护程序。 dockerd 守护程序通过 Docker REST API 响应来自客户端的请求,并且可以与其他守护程序进行交互。 此外,Docker 服务器还负责跟踪容器的生命周期。

Docker 对象

你将创建并配置多个对象以支持容器部署。 这些对象包括网络、存储卷、插件和其他服务对象。 我们不会在这里介绍所有这些对象,但请记住,我们可以根据需要创建和部署这些对象。

Docker Hub

Docker Hub 是一个软件即服务 (SaaS) Docker 容器注册表。 Docker 注册表是用于存储和分发创建的容器映像的存储库。 Docker Hub 是 Docker 用于映像管理的默认公共注册表。

请记住,可以创建和使用专用 Docker 注册表,也可以使用可用的多个云提供商选项之一。 例如,可以使用 Azure 容器注册表来存储容器映像,以便在多个启用了 Azure 容器的服务中使用。