术语表

术语定义
Compose

Compose 是一个用于定义和运行复杂 Docker 应用程序的工具。使用 Compose,您可以单个文件中定义一个多容器应用程序,然后使用单个命令启动您的应用程序,该命令执行使应用程序运行所需的一切操作。

也称为 Docker Compose

Docker

术语 Docker 可以指

  • 整个 Docker 项目,这是一个供开发人员和系统管理员开发、交付和运行应用程序的平台
  • 在主机上运行的 docker 守护程序进程,用于管理镜像和容器(也称为 Docker Engine)
Docker BusinessDocker Business 是 Docker 订阅服务。Docker Business 为大规模使用 Docker 的企业提供集中式管理和高级安全功能。它使领导者能够管理他们的 Docker 开发环境并加速其安全软件供应链计划。
Docker Desktop

Docker Desktop 是一款易于安装、轻量级的 Docker 开发环境。Docker Desktop 可用于 MacWindowsLinux,为开发人员提供跨平台一致的体验。Docker Desktop 包括 Docker Engine、Docker CLI 客户端、Docker Compose、Docker Content Trust、Kubernetes 和 Credential Helper。

Docker Desktop 可与您选择的开发工具和语言配合使用,并让您访问 Docker Hub 中的大量经过认证的镜像和模板。这使开发团队能够扩展其环境,以使用安全存储库快速自动构建、持续集成和协作。

Docker Desktop for LinuxDocker Desktop for Linux 是一个易于安装的轻量级 Docker 开发环境,专为 Linux 机器设计。如果您想在 Linux 机器上构建、调试、测试、打包和交付 Docker 化应用程序,这是最佳解决方案。
Docker Desktop for MacDocker Desktop for Mac 是一个易于安装的轻量级 Docker 开发环境,专为 Mac 设计。作为原生 Mac 应用程序,Docker Desktop for Mac 使用 macOS Hypervisor 框架、网络和文件系统。如果您想在 Mac 上构建、调试、测试、打包和交付 Docker 化应用程序,这是最佳解决方案。
Docker Desktop for WindowsDocker Desktop for Windows 是一个易于安装的轻量级 Docker 开发环境,专为支持 WSL 2 和 Microsoft Hyper-V 的 Windows 系统设计。Docker Desktop for Windows 使用 WSL 2 或 Hyper-V 进行虚拟化。如果您想从 Windows 机器构建、调试、测试、打包和交付 Docker 化应用程序,Docker Desktop for Windows 是最佳解决方案。
Docker Hub

Docker Hub 是一个用于处理 Docker 及其组件的集中式资源。它提供以下服务

  • 一个用于托管 Docker 镜像的注册表
  • 用户身份验证
  • 自动化镜像构建和工作流程工具,例如构建触发器和 Webhook
  • 与 GitHub 和 Bitbucket 集成
  • 安全漏洞扫描
Docker ID您的免费 Docker ID 可让您访问 Docker Hub 存储库和一些 Beta 程序。您只需要一个电子邮件地址。
Docker 官方镜像Docker 官方镜像是在 Docker Hub 上托管的一组精选的 Docker 存储库。Docker 公司赞助了一个专门的团队,负责审查和发布 Docker 官方镜像中的所有内容。该团队与上游软件维护者、安全专家和更广泛的 Docker 社区合作。
Docker 开源镜像Docker 开源镜像由 Docker 开源计划的成员组织发布和维护。
Docker PersonalDocker Personal 是一个 Docker 订阅服务。它专注于开源社区、个人开发人员、教育和小型企业,Docker Personal 将继续允许免费使用 Docker 组件 - 包括 Docker CLI、Docker Compose、Docker Engine、Docker Desktop、Docker Hub、Kubernetes、Docker Build 和 Docker BuildKit、Docker 官方镜像、Docker Scan 等。
Docker ProDocker Pro 是一个 Docker 订阅服务。Docker Pro 使个人开发人员能够更好地控制其开发环境,并提供集成且可靠的开发人员体验。它减少了开发人员在日常和重复性任务上花费的时间,并使开发人员能够将更多时间用于为客户创造价值。
Docker TeamDocker Team 是一个 Docker 订阅服务。Docker Team 提供跨组织的协作、生产力和安全功能。它使开发人员团队能够释放协作和共享的全部功能,并结合必要的安全功能和团队管理功能。
Docker 可信内容计划Docker 可信内容计划通过四个计划验证内容:Docker 官方镜像Docker 验证发布者镜像Docker 开源镜像 和自定义官方镜像。
Docker 验证发布者镜像Docker 验证发布者镜像已由 Docker 确认来自参与验证发布者计划的受信任软件发布者。Docker 验证发布者镜像通过 Docker Hub 存储库中包含的验证发布者徽章进行识别。
Docker 订阅Docker 订阅层(有时也称为计划)包括 PersonalProTeamBusiness。有关更多详细信息,请参见 Docker 订阅概述
DockerfileDockerfile 是一个文本文件,其中包含通常为手动构建 Docker 镜像而执行的所有命令。Docker 可以通过读取 Dockerfile 中的指令来自动构建镜像。
ENTRYPOINT

在 Dockerfile 中,ENTRYPOINT 是要运行的命令的第一部分的可选定义。如果您希望您的 Dockerfile 可运行而无需为 docker run 命令指定其他参数,则必须指定 ENTRYPOINTCMD 或两者兼有。

  • 如果指定了 ENTRYPOINT,则将其设置为单个命令。大多数官方 Docker 镜像的 ENTRYPOINT/bin/sh/bin/bash。即使您没有指定 ENTRYPOINT,您也可能会从使用 Dockerfile 中的 FROM 关键字指定的基镜像继承它。要覆盖运行时的 ENTRYPOINT,可以使用 --entrypoint。以下示例将 entrypoint 覆盖为 /bin/ls 并将 CMD 设置为 -l /tmp

    $ docker run --entrypoint=/bin/ls ubuntu -l /tmp
  • CMD 附加到 ENTRYPOINTCMD 可以是根据 ENTRYPOINT 有效的任何任意字符串,允许您一次传递多个命令或标志。要覆盖运行时的 CMD,只需在容器名称或 ID 后添加它即可。在以下示例中,CMD 被覆盖为 /bin/ls -l /tmp

    $ docker run ubuntu /bin/ls -l /tmp

实际上,ENTRYPOINT 很少被覆盖。但是,指定 ENTRYPOINT 可以使您的镜像更灵活,更容易重用。

SSHSSH(安全外壳协议)是一种用于访问远程机器和应用程序的安全协议。它提供身份验证并在不安全的网络(如互联网)上加密数据通信。SSH 使用公钥/私钥对进行身份验证。
联合文件系统

联合文件系统实现了一种联合挂载并通过创建层来工作。Docker 将联合文件系统与写时复制技术结合使用,为容器构建模块提供基础,使其非常轻量级且快速。

有关 Docker 和联合文件系统的更多信息,请参阅Docker 和 OverlayFS 的实践

联合文件系统的示例实现包括UnionFSOverlayFS

amd64AMD64 是 AMD 对 Intel x86 架构的 64 位扩展,也称为 x86_64(或 x86-64)。
arm64ARM64 是 ARM CPU 架构的 64 位扩展。Apple 硅芯片机器使用 arm64 架构。
基础镜像基础镜像是在 Dockerfile 中的 `FROM` 指令中指定的镜像。它定义了构建的起点。Dockerfile 指令会在基础镜像之上创建附加层。使用 `FROM scratch` 指令的 Dockerfile 使用空基础镜像。
btrfsbtrfs(B 树文件系统)是 Docker 支持作为存储后端的 Linux 文件系统。它是一种写时复制文件系统。
构建构建是使用Dockerfile构建 Docker 镜像的过程。构建使用 Dockerfile 和“上下文”。上下文是构建镜像的目录中的一组文件。
cgroups

cgroups 是 Linux 内核的一个特性,它限制、统计和隔离一组进程的资源使用情况(CPU、内存、磁盘 I/O、网络等)。Docker 依赖 cgroups 来控制和隔离资源限制。

也称为控制组

集群集群是一组协同工作以运行工作负载并提供高可用性的机器。
容器

容器是Docker 镜像的运行时实例。

Docker 容器包含:

  • 一个 Docker 镜像
  • 一个执行环境
  • 一组标准指令

这个概念借鉴于集装箱运输,集装箱定义了在全球范围内运输货物的标准。Docker 定义了运输软件的标准。

容器镜像Docker 镜像是容器的基础。镜像是根文件系统更改的有序集合以及在容器运行时中使用的相应执行参数。镜像通常包含相互叠加的分层文件系统的并集。
写时复制

Docker 使用写时复制技术和联合文件系统来优化镜像和容器的资源并提高性能。多个实体副本共享同一个实例,每个副本只对其唯一层进行特定更改。

多个容器可以共享对同一镜像的访问,并在可写层上进行容器特定的更改,该可写层在容器删除时也会被删除。这加快了容器启动时间和性能。

镜像本质上是文件系统的层,通常基于可写层下的基础镜像,并通过与基础镜像不同的层构建而成。这最大限度地减少了镜像的占用空间,并支持共享开发。

有关 Docker 上下文中写时复制的更多信息,请参阅了解镜像、容器和存储驱动程序

文件系统

文件系统是操作系统用来命名文件并为其分配位置以实现高效存储和检索的方法。

示例:

  • Linux:overlay2、extfs、btrfs、zfs
  • Windows:NTFS
  • macOS:APFS
镜像Docker 镜像是容器的基础。镜像是根文件系统更改的有序集合以及在容器运行时中使用的相应执行参数。镜像通常包含相互叠加的分层文件系统的并集。镜像没有状态,它永远不会改变。
受邀者已被邀请加入组织但尚未接受邀请的人。
在镜像中,层是对镜像的修改,由 Dockerfile 中的指令表示。层按顺序应用于基础镜像以创建最终镜像。当镜像更新或重新构建时,只需要更新更改的层,未更改的层会缓存在本地。这就是 Docker 镜像如此快速和轻量级的原因之一。各层的尺寸之和等于最终镜像的尺寸。
libcontainerlibcontainer 提供了一个原生 Go 实现,用于使用命名空间、cgroups、功能和文件系统访问控制来创建容器。它允许您管理容器的生命周期,在容器创建后执行其他操作。
libnetworklibnetwork 提供了一个原生 Go 实现,用于创建和管理容器网络命名空间和其他网络资源。它管理容器的网络生命周期,在容器创建后执行其他操作。
成员已收到并接受邀请加入组织的人。成员也可以指组织内团队的成员。
命名空间Linux 命名空间是 Linux 内核的一个特性,它隔离和虚拟化系统资源。限制在命名空间中的进程只能与属于同一命名空间的资源或进程交互。命名空间是 Docker 隔离模型的重要组成部分。每个类型的资源都有命名空间,包括 `net`(网络)、`mnt`(存储)、`pid`(进程)、`uts`(主机名控制)和 `user`(UID 映射)。有关命名空间的更多信息,请参阅Docker run 参考使用用户命名空间隔离容器
节点

Swarm 模式下,节点是在物理机或虚拟机上运行 Docker Engine 实例的机器。

管理器节点执行 Swarm 管理和编排任务。默认情况下,管理器节点也是工作节点。

工作节点执行任务。

组织组织是可以一起管理的团队和代码库的集合。当 Docker 用户被分配到组织中的至少一个团队时,他们就成为该组织的成员。
组织名称组织名称,有时也称为组织命名空间或组织 ID,是 Docker 组织的唯一标识符。
Overlay 网络驱动程序Overlay 网络驱动程序为集群中的 Docker 容器提供开箱即用的多主机网络连接。
Overlay 存储驱动程序OverlayFS 是 Linux 的文件系统服务,它为其他文件系统实现了联合挂载。Docker 守护程序支持它作为存储驱动程序。
持久化存储持久化存储或卷存储为用户提供了一种向正在运行的容器的文件系统添加持久化层的方法。此持久化层可以位于容器主机上或外部设备上。此持久化层生命周期与容器生命周期无关,允许用户保留状态。
注册表

注册表是一个托管服务,包含存储库中的镜像,并响应注册表 API。

可以使用浏览器通过Docker Hub访问默认注册表,或者使用 `docker search` 命令。

仓库

仓库是一组 Docker 镜像。可以通过将其推送到注册表服务器来共享仓库。仓库中的不同镜像可以使用标签进行标记。

这是一个共享的nginx 仓库及其标签的例子。

席位席位数指的是组织中计划成员的数量。
服务

一个服务定义了如何在 Swarm 中运行应用程序容器。最基本的是,服务定义了在 Swarm 中运行哪个容器镜像以及在容器中运行哪些命令。出于编排的目的,服务定义了“期望状态”,这意味着要运行多少个容器作为任务以及部署容器的约束。

通常,服务是在某个更大的应用程序环境中的微服务。服务的示例可能包括 HTTP 服务器、数据库或任何其他希望在分布式环境中运行的可执行程序。

服务账号服务账号是用于自动管理容器镜像或容器化应用程序的 Docker ID。服务账号通常用于自动化工作流程,并且不与 Docker Team 或 Docker Business 订阅计划中的成员共享 Docker ID。
服务发现

Swarm 模式容器发现是 Swarm 内部的一个 DNS 组件,它会自动为 Swarm 中覆盖网络上的每个服务分配 VIP 和 DNS 条目。网络上的容器通过 gossip 共享服务的 DNS 映射,因此网络上的任何容器都可以通过其服务名称访问该服务。

无需公开特定于服务的端口即可使服务可供同一覆盖网络上的其他服务使用。Swarm 的内部负载均衡器会自动将请求在活动任务之间分配到服务 VIP。

Swarm一个Swarm是由一个或多个运行在Swarm 模式下的 Docker Engine 组成的集群。
Swarm 模式Swarm 模式指的是 Docker Engine 中嵌入的集群管理和编排功能。当您初始化一个新的 Swarm(集群)或将节点加入 Swarm 时,Docker Engine 将在 Swarm 模式下运行。
标签标签是应用于仓库中 Docker 镜像的标签。标签是区分仓库中各种镜像的方式。
任务一个任务是 Swarm 中调度的原子单元。任务承载 Docker 容器以及在容器内运行的命令。管理器节点根据服务规模中设置的副本数将任务分配给工作节点。
团队团队是属于组织的一组 Docker 用户。一个组织可以有多个团队。
虚拟机

虚拟机是一个模拟完整计算机并模仿专用硬件的程序。它与其他用户共享物理硬件资源,但会隔离操作系统。最终用户在虚拟机上的体验与在专用硬件上的体验相同。

与容器相比,虚拟机的运行开销更大,提供了更好的隔离性,拥有自己的一套资源,并且共享程度较低。

也称为 VM

卷是在一个或多个容器内特别指定的目录,它绕过了联合文件系统。卷旨在持久化数据,独立于容器的生命周期。因此,当您删除容器时,Docker 永远不会自动删除卷,也不会“垃圾回收”不再被容器引用的卷。也称为:数据卷

卷有三种类型:主机卷、匿名卷和命名卷

  • **主机卷**位于 Docker 主机的文件系统上,可以从容器内部访问。

  • **命名卷**是 Docker 管理卷在磁盘上创建位置的卷,但它有一个名称。

  • **匿名卷**类似于命名卷,但是,当它是匿名卷时,很难长时间引用相同的卷。Docker 处理文件存储位置。

x86_64x86_64(或 x86-64)指的是 AMD 发明的 64 位指令集,它是 Intel x86 架构的扩展。AMD 将其 x86_64 架构称为 AMD64,而 Intel 将其实现称为 Intel 64。