词汇表

术语定义
Compose

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

也称为 Docker Compose

Docker

术语 Docker 可以指

  • Docker 项目作为一个整体,是一个供开发人员和系统管理员开发、交付和运行应用程序的平台
  • 在主机上运行的 Docker 守护进程,负责管理镜像和容器(也称为 Docker Engine)
Docker 企业版Docker 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 中海量经过认证的镜像和模板库。这使开发团队能够扩展其环境,利用安全仓库快速自动构建、持续集成和协作。

适用于 Linux 的 Docker DesktopDocker Desktop for Linux 是一个易于安装、轻量级的 Docker 开发环境,专为 Linux 机器设计。如果你想在 Linux 机器上构建、调试、测试、打包和交付 Docker 化的应用程序,它是最佳解决方案。
适用于 Mac 的 Docker DesktopDocker Desktop for Mac 是一款专为 Mac 设计的易于安装、轻量级的 Docker 开发环境。作为一款原生 Mac 应用程序,Docker Desktop for Mac 使用了 macOS Hypervisor 框架、网络和文件系统。如果您希望在 Mac 上构建、调试、测试、打包和交付 Docker 化应用程序,这是最佳解决方案。
适用于 Windows 的 Docker DesktopDocker 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 镜像的仓库
  • 用户认证
  • 自动化镜像构建和工作流工具,如构建触发器和 Web 钩子
  • 集成 GitHub 和 Bitbucket
  • 安全漏洞扫描
Docker ID您的免费 Docker ID 让您可以访问 Docker Hub 仓库和一些测试版程序。您只需要一个电子邮件地址。
Docker 官方镜像Docker 官方镜像是一组托管在 Docker Hub 上的精选 Docker 仓库。Docker, Inc. 赞助了一个专门的团队,负责审查和发布 Docker 官方镜像中的所有内容。该团队与上游软件维护者、安全专家以及更广泛的 Docker 社区合作。
Docker 开源镜像Docker 开源镜像由 Docker 开源计划的成员组织发布和维护。
Docker 个人版Docker Personal 是一项Docker 订阅。Docker Personal 专注于开源社区、个人开发者、教育和小型企业,将继续允许免费使用 Docker 组件——包括 Docker CLI、Docker Compose、Docker Engine、Docker Desktop、Docker Hub、Kubernetes、Docker Build 和 Docker BuildKit、Docker 官方镜像、Docker Scan 等。
Docker 专业版Docker Pro 是一项 Docker 订阅。Docker Pro 让个人开发者能够更好地掌控其开发环境,并提供集成且可靠的开发者体验。它减少了开发者在琐碎和重复性任务上花费的时间,使开发者能够将更多时间用于为客户创造价值。
Docker 团队Docker 团队版是一个 Docker 订阅。Docker 团队版为组织提供了协作、生产力和安全方面的功能。它使开发者群体能够释放协作和共享的全部力量,并结合了基本的安全功能和团队管理能力。
Docker 可信内容计划Docker 可信内容计划通过四个项目验证内容, Docker 官方镜像Docker 认证发布者镜像Docker 开源镜像和自定义官方镜像。
Docker 认证发布者镜像Docker Verified Publisher Images 由 Docker 确认来自可信的软件发布者,这些发布者是 Verified Publisher 计划的合作伙伴。Docker Verified Publisher Images 通过 Docker Hub 仓库中包含的 Verified Publisher 徽章进行标识。
Docker 订阅Docker 订阅层级,有时也称为计划,包括 个人版专业版团队版 以及 企业版。更多详情,请参见 Docker 订阅概览
DockerfileDockerfile 是一个文本文件,其中包含您通常手动执行以构建 Docker 镜像的所有命令。Docker 可以通过读取 Dockerfile 中的指令自动构建镜像。
入口点(ENTRYPOINT)

在 Dockerfile 中,ENTRYPOINT 是可选的,用于定义要运行的命令的第一部分。如果您希望您的 Dockerfile 在不指定 docker run 命令的额外参数时即可运行,则必须指定 ENTRYPOINTCMD 或两者。

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

    $ docker run --entrypoint=/bin/ls ubuntu -l /tmp
  • CMD 被追加到 ENTRYPOINT 之后。CMD 可以是任何在 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 位扩展。arm64 架构用于 Apple Silicon 设备。
基础镜像基础镜像是您在 Dockerfile 的 FROM 指令中指定的镜像。 它定义了构建的起点。 Dockerfile 指令会在基础镜像之上创建额外的层。 带有 FROM scratch 指令的 Dockerfile 使用空的基础镜像。
btrfsbtrfs(B-tree 文件系统)是 Docker 支持的 Linux 文件系统,用作存储后端。它是一个 写时复制 文件系统。
构建构建是使用 Dockerfile 构建 Docker 镜像的过程。 构建使用 Dockerfile 和“上下文”。上下文是构建镜像所在目录中的文件集合。
控制组

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

也称为控制组

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

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

一个 Docker 容器由以下部分组成

  • Docker 镜像
  • 执行环境
  • 一套标准的指令

该概念借鉴自集装箱,集装箱定义了全球运输货物的标准。Docker 定义了软件运输的标准。

容器镜像Docker 镜像是容器的基础。镜像是一个有序的文件系统根目录变更集合以及相应的执行参数,用于在容器运行时环境中使用。镜像通常包含多个分层文件系统叠加而成的联合文件系统。
copy-on-write

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

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

镜像本质上是文件系统的层,通常基于一个基础镜像并在其之上添加可写层构建而成,通过叠加与基础镜像的差异层来形成。这种方式最小化了镜像的占用空间,并支持共享开发。

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

文件系统

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

示例:

  • Linux : overlay2, extfs, btrfs, zfs
  • Windows : NTFS
  • macOS : APFS
镜像Docker 镜像是 容器的基础。镜像是一个有序的文件系统根变更集合以及相应的执行参数,用于在容器运行时中使用。镜像通常包含分层文件系统叠加在一起的联合视图。镜像没有状态且永不改变。
受邀者已邀请加入组织但尚未接受邀请的人员。
在镜像中,层是对镜像的修改,由 Dockerfile 中的指令表示。层按顺序应用于基础镜像以创建最终镜像。 当镜像被更新或重新构建时,只有发生变化的层需要更新,未更改的层会缓存在本地。这也是 Docker 镜像如此快速和轻量化的原因之一。各层的大小相加等于最终镜像的大小。
libcontainerlibcontainer 提供了原生的 Go 语言实现,用于通过命名空间、cgroups、能力(capabilities)和文件系统访问控制来创建容器。它允许你管理容器的生命周期,并在容器创建后执行其他操作。
网络库libnetwork 提供原生的 Go 实现,用于创建和管理容器网络命名空间及其他网络资源。它管理容器的网络生命周期,并在容器创建后执行其他操作。
会员已收到并接受邀请以加入一个 组织的人员。成员也可以指组织内 团队的成员。
命名空间A Linux 命名空间 is a Linux kernel feature that isolates and virtualizes system resources. Processes which are restricted to a namespace can only interact with resources or processes that are part of the same namespace. Namespaces are an important part of Docker's isolation model. Namespaces exist for each type of resource, including net (networking), mnt (storage), pid (processes), uts (hostname control), and user (UID mapping). For more information about namespaces, see Docker run reference and Isolate containers with a user namespace.
节点

A 节点 是运行 Docker Engine 实例的物理或虚拟 机器,且处于 集群模式

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

工作节点执行任务。

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

Registry 是一个托管服务,包含 仓库镜像,这些资源响应 Registry API。

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

仓库

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

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

座位座位数指的是一个 组织内计划成员的数量。
服务

A 服务 是定义如何在群集中运行应用程序容器的规范。在最基本的层面上,服务定义了要在群集中运行的容器镜像以及在容器中执行的命令。为了编排目的,服务定义了“期望状态”,即要作为任务运行的容器数量以及部署容器的约束条件。

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

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

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

您无需暴露特定服务的端口即可让同一覆盖网络上的其他服务访问该服务。Swarm 的内部负载均衡器会自动将请求分发到活跃任务中的服务 VIP。

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

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

与容器相比,虚拟机运行更重,提供更强的隔离性,拥有独立的资源集,且共享极少。

也称为虚拟机

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

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

  • 一个主机卷存在于 Docker 主机的文件系统中,并且可以从容器内部访问。

  • 一个命名卷是 Docker 管理的卷,其中卷在磁盘上创建,但被赋予了一个名称。

  • 一个匿名卷类似于命名卷,但当它是匿名卷时,随着时间的推移可能难以引用同一个卷。Docker 负责文件存储的位置。

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