Docker 使用客户端/服务器架构。以下是与 Docker 相关的核心组件以及其他 Docker 术语和工具的细分。
Docker 主机:Docker 主机是运行 Linux(或其他与 Docker 引擎兼容的操作系统)的物理机或虚拟机。
Docker Engine:Docker Engine 是一个客户端/服务器应用程序,由 Docker 守护进程、与守护进程交互的 Docker API 以及与守护进程对话的命令行界面 (CLI) 组成。
Docker 守护程序:Docker 守护程序是一种使用客户端命令创建和管理 Docker 映像的服务。从本质上讲,Docker 守护程序充当 Docker 实施的控制中心。
Docker 客户端:Docker 客户端提供访问 Docker API(一种 REST API)的 CLI,以通过 Unix 套接字或网络接口与 Docker 守护程序进行通信。客户端可以远程连接到守护进程,或者开发人员可以在同一计算机系统上运行守护进程和客户端。
Docker 对象:Docker 对象是 Docker 部署的组件,可帮助打包和分发应用程序。它们包括映像、容器、网络、卷、插件等。
Docker 容器:Docker 容器是 Docker 映像的实时运行实例。Docker 映像是只读文件,而容器是实时的短暂可执行内容。用户可以与它们交互,管理员可以使用 Docker 命令调整其设置和条件。
Docker 映像:Docker 映像包含可执行的应用程序源代码以及应用程序代码作为容器运行所需的所有工具、库和依赖项。当开发人员运行 Docker 映像时,它会成为一个(或多个)容器实例。
从头开始构建 Docker 映像是可能的,但大多数开发人员都是从公共存储库中提取这些映像。开发人员可以从单个基础映像创建多个 Docker 映像,并将共享其堆栈的共同点。
Docker 映像包含多个层,每个层对应于一个映像版本。每当开发人员对映像进行更改时,都会创建一个新的顶层,该顶层替换上一个顶层以作为当前映像版本。以前的层将被保存,以便进行回滚或在其他项目中重用。
每次通过 Docker 映像创建容器时,都会创建另一个新的层(称为容器层)。对容器所做的更改(例如添加或删除文件)将保存到容器层,并且这些更改仅在容器运行时存在。
这种迭代的映像创建过程提高了整体效率,因为多个活动容器实例可以从单个基础映像运行。这样做时,它们使用一个公共堆栈。
Docker build:Docker build 命令拥有构建 Docker 映像的工具和功能。
Dockerfile:每个 Docker 容器以一个简单的文本文件开始,其中包含如何构建 Docker 容器映像的指令。Dockerfile 可自动执行创建 Docker 映像的过程。它本质上是 Docker Engine 为构建映像而运行的 CLI 指令列表。Docker 命令列表庞大但已标准化:无论内容、基础设施或其他环境变量如何,Docker 操作的工作方式都是相同的。
Docker 文档:Docker 文档是指用于构建容器化应用程序的官方 Docker 资源、手册和指南库。
Docker Hub:Docker Hub 6是 Docker 映像的公共存储库,自称是世界上最大的容器映像库和社区7。它存储有超过 10 万个来自商业软件供应商、开源项目和个人开发人员的容器映像。Docker Hub 包括 Docker, Inc. 生成的映像、属于 Docker Trusted Registry 的认证映像以及数千个其他映像。
所有 Docker Hub 用户都可以随意共享他们的映像。他们还可以从 Docker 文件系统中下载预定义的基础映像,以作为任何容器化项目的起点。
还存在其他映像存储库,包括 GitHub 8。GitHub 是一种存储库托管服务,以应用程序开发工具和促进协作和沟通的平台而闻名。Docker Hub 用户可以创建一个能容纳很多映像的存储库。存储库可以是公共存储库,也可以是私有存储库,并且可以链接到 GitHub 或 BitBucket 帐户。
Docker Desktop:Docker Desktop 是一款适用于 Mac 或 Windows 的应用程序,包括 Docker Engine、Docker CLI 客户端、Docker Compose、Kubernetes 等。它还提供对 Docker Hub 的访问。
Docker 注册表:Docker 注册表是用于 Docker 映像的可扩展的开源存储和分发系统。它使开发人员能够通过使用标记进行识别来跟踪存储库中的映像版本。这种跟踪和识别是使用 Git(一种版本控制工具)完成的。
Docker 插件:开发人员使用插件来增强 Docker Engine 的功能。Docker Engine 插件系统中包含多个支持授权、卷和网络的 Docker 插件;也可以加载第三方插件。
Docker 扩展:利用 Docker 扩展,开发人员将能够在 Docker Desktop 中使用第三方工具来扩展其功能。开发人员工具的扩展包括 Kubernetes 应用程序开发、安全性、可观察性等。
Docker Compose:开发人员可以使用 Docker Compose 管理多容器应用程序,其中所有容器都在同一台 Docker 主机上运行。Docker Compose 创建一个 YAML (.YML) 文件,该文件指定在应用程序中包含哪些服务,并且可以使用一个命令部署和运行容器。由于 YAML 语法与语言无关,因此,可以在以 Java、Python、Ruby 和很多其他语言编写的程序中使用 YAML 文件。
开发人员还可以使用 Docker Compose 定义用于存储的持久卷,指定基础节点以及记录和配置服务依赖项。
