可信内容

Docker Hub 的可信内容提供了一系列精选的高质量、安全的镜像,旨在让开发者对所用资源的可靠性和安全性充满信心。这些镜像稳定、定期更新并遵循行业最佳实践,为构建和部署应用程序奠定了坚实基础。Docker Hub 的可信内容包括 Docker 官方镜像、已验证发布者镜像和 Docker 赞助的开源软件镜像。

Docker 官方镜像

注意

Docker 正在为 Docker 官方镜像 (DOI) 停用 Docker 内容信任 (DCT)。从 2025 年 8 月 8 日开始,最旧的 DOI DCT 签名证书将开始到期。如果您将 docker trust 命令与 DOI 一起使用,可能已经开始看到过期警告。这些证书一旦被 Docker 客户端缓存,随后将不会刷新,这使得证书轮换不切实际。如果您已将 DOCKER_CONTENT_TRUST 环境变量设置为 true (DOCKER_CONTENT_TRUST=1),DOI 拉取将开始失败。解决方法是取消设置 DOCKER_CONTENT_TRUST 环境变量。docker trust inspect 的使用也将开始失败,并且不应再用于 DOI。

有关更多详细信息,请参阅 https://www.docker.com/blog/retiring-docker-content-trust/

Docker 官方镜像是在 Docker Hub 上托管的一组精选 Docker 仓库。

Docker 建议您在项目中使用 Docker 官方镜像。这些镜像有清晰的文档,遵循最佳实践,并定期更新。Docker 官方镜像支持大多数常见用例,非常适合 Docker 新用户。高级用户可以从更专业的镜像变体中受益,也可以在 Dockerfile 学习过程中查看 Docker 官方镜像。

注意

Docker 官方镜像的使用受 Docker 服务条款的约束。

这些镜像提供了重要的基础仓库,可作为大多数用户的起点。

这包括操作系统,例如 UbuntuAlpine,编程语言运行时,例如 PythonNode,以及其他基本工具,例如 memcachedMySQL

这些镜像是 Docker Hub 上 最安全的镜像。这尤其重要,因为 Docker 官方镜像是一些最受欢迎的 Docker Hub 镜像。通常,Docker 官方镜像几乎没有或完全没有包含 CVE 的软件包。

这些镜像展示了 Dockerfile 最佳实践,并提供了清晰的文档,可作为其他 Dockerfile 作者的参考。

属于该计划的镜像在 Docker Hub 上有一个特殊徽章,方便您识别属于 Docker 官方镜像的项目。

Docker official image badge

每个 Docker 官方镜像的仓库描述都包含一个“**支持的标签和相应的 Dockerfile 链接**”部分,其中列出了所有当前标签以及指向使用这些标签创建镜像的 Dockerfile 的链接。此部分的目的是显示可用的镜像变体。

Example: supported tags for Ubuntu

同一行上列出的标签都指向相同的底层镜像。多个标签可以指向同一个镜像。例如,在从 `ubuntu` Docker 官方镜像仓库截取的上一个截图中,标签 `24.04`、`noble-20240225`、`noble` 和 `devel` 都指向同一个镜像。

Docker 官方镜像的 latest 标签通常经过优化,易于使用,并包含各种有用的软件,例如开发和构建工具。通过将镜像标记为 latest,镜像维护者实际上是在建议将该镜像用作默认镜像。换句话说,如果您不知道使用哪个标签或不熟悉底层软件,您应该从 latest 镜像开始。随着您对软件和镜像变体的理解加深,您可能会发现其他镜像变体更适合您的需求。

精简镜像

许多语言栈(例如 Node.jsPythonRuby)都提供了 slim 标签变体,旨在提供一个轻量级的、可用于生产环境的基础镜像,其中包含较少的软件包。

slim 镜像的典型使用模式是作为 多阶段构建 最终阶段的基础镜像。例如,您在构建的第一阶段使用 latest 变体构建应用程序,然后将应用程序复制到基于 slim 变体的最终阶段。这是一个 Dockerfile 示例。

FROM node:latest AS build
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY . ./
FROM node:slim
WORKDIR /app
COPY --from=build /app /app
CMD ["node", "app.js"]

Alpine 镜像

许多 Docker 官方镜像仓库也提供 alpine 变体。这些镜像构建在 Alpine Linux 发行版而非 Debian 或 Ubuntu 之上。Alpine Linux 专注于为容器镜像提供小巧、简单且安全的基础,而 Docker 官方镜像 alpine 变体通常旨在仅安装必要的软件包。因此,Docker 官方镜像 alpine 变体通常甚至比 slim 变体更小。

需要注意的主要问题是 Alpine Linux 使用 musl libc 而不是 glibc。此外,为了最小化镜像大小,基于 Alpine 的镜像通常默认不包含 Git 或 Bash 等工具。根据您的程序中 libc 需求或假设的深度,您可能会因为缺少库或工具而遇到问题。

当您使用 Alpine 镜像作为基础时,请考虑以下选项,以使您的程序与 Alpine Linux 和 musl 兼容:

  • 针对 musl libc 编译您的程序
  • 将 glibc 库静态链接到您的程序中
  • 完全避免 C 依赖(例如,构建不带 CGO 的 Go 程序)
  • 在 Dockerfile 中自行添加所需的软件。

如果您不熟悉如何安装软件包,请参阅 Docker Hub 上 alpine 镜像的描述中的示例。

代号

带有类似《玩具总动员》角色名称(例如 bookwormbullseyetrixie)或形容词(例如 jammynoble)的标签表示它们所使用的基础镜像的 Linux 发行版代号。Debian 版本代号基于《玩具总动员》角色,而 Ubuntu 的代号形式为“形容词 动物”。例如,Ubuntu 24.04 的代号是“Noble Numbat”。

Linux 发行版指示符很有帮助,因为许多 Docker 官方镜像提供了基于多个底层发行版版本(例如,`postgres:bookworm` 和 `postgres:bullseye`)构建的变体。

其他标签

除了这里描述的标签外,Docker 官方镜像标签可能还包含其他提示,说明其镜像变体的用途。通常,这些标签变体会在 Docker 官方镜像仓库文档中进行解释。阅读“如何使用此镜像”和“镜像变体”部分将帮助您了解如何使用这些变体。

已验证发布者镜像

Docker 认证发布商计划提供由 Docker 认证的商业发布商发布的高质量镜像。

这些镜像帮助开发团队构建安全的软件供应链,在流程早期最大限度地减少恶意内容暴露,从而节省后期的时间和金钱。

属于该计划的镜像在 Docker Hub 上有一个特殊徽章,方便用户识别 Docker 认证为高质量商业发布商的项目。

Docker-Sponsored Open Source badge

Docker 赞助的开源软件镜像

Docker 赞助的开源软件 (OSS) 计划提供由 Docker 赞助的开源项目发布和维护的镜像。

属于此计划的镜像在 Docker Hub 上有一个特殊徽章,方便用户识别 Docker 验证为可信、安全且活跃的开源项目。

Docker-Sponsored Open Source badge
© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.