受信任的内容
Docker Hub 的受信任内容提供了精选的高质量、安全镜像,旨在让开发者对其使用的资源的可靠性和安全性充满信心。这些镜像稳定、定期更新,并遵循行业最佳实践,使其成为构建和部署应用程序的坚实基础。Docker Hub 的受信任内容包括 Docker Official Images、认证发布者镜像和 Docker 赞助开源软件镜像。
Docker 官方镜像
Docker Official Images 是一组托管在 Docker Hub 上的精选 Docker 仓库。
Docker 建议您在项目中优先使用 Docker Official Images。这些镜像有清晰的文档,遵循最佳实践,并且定期更新。Docker Official Images 支持大多数常见用例,非常适合新的 Docker 用户。高级用户可以从更专业的镜像变体中受益,也可以在学习 Dockerfile
的过程中参考 Docker Official Images。
注意
使用 Docker Official Images 须遵守 Docker 服务条款。
这些镜像提供了必要的基础仓库,作为大多数用户的起点。
其中包括操作系统,例如 Ubuntu 和 Alpine;编程语言运行时,例如 Python 和 Node;以及其他基本工具,例如 memcached 和 MySQL。
这些镜像属于 Docker Hub 上最安全的镜像之列。这一点尤为重要,因为 Docker Official Images 是 Docker Hub 上最受欢迎的镜像之一。通常,Docker Official Images 所含包含 CVE 的软件包很少或没有。
这些镜像示例了 Dockerfile 最佳实践,并提供清晰的文档,可供其他 Dockerfile 作者参考。
参与此计划的镜像在 Docker Hub 上有一个特殊徽章,让您更容易识别属于 Docker Official Images 的项目。


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


同一行中列出的标签都指向同一个底层镜像。多个标签可以指向同一个镜像。例如,在之前从 ubuntu
Docker Official Images 仓库截取的屏幕截图中,标签 24.04
、noble-20240225
、noble
和 devel
都指向同一个镜像。
Docker Official Image 的 latest
标签通常经过优化,易于使用,并包含各种有用的软件,例如开发和构建工具。通过将镜像标记为 latest
,镜像维护者本质上建议将该镜像用作默认镜像。换句话说,如果您不知道要使用哪个标签或不熟悉底层软件,则应该从 latest
镜像开始。随着您对软件和镜像变体的了解加深,您可能会发现其他镜像变体更适合您的需求。
Slim 镜像
许多语言栈,例如 Node.js、Python 和 Ruby,都提供 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 Official Images 仓库还提供 alpine
变体。这些镜像构建于 Alpine Linux 发行版之上,而不是 Debian 或 Ubuntu。Alpine Linux 专注于为容器镜像提供一个小型、简单且安全的基础,而 Docker Official Images 的 alpine
变体通常只安装必要的软件包。因此,Docker Official Images 的 alpine
变体通常甚至比 slim
变体更小。
需要注意的主要事项是 Alpine Linux 使用 musl libc 而非 glibc。此外,为了最大限度地减小镜像大小,基于 Alpine 的镜像通常默认不包含 Git 或 Bash 等工具。根据你的程序对 libc 的需求深度或假设,你可能会遇到缺少库或工具的问题。
当你使用 Alpine 镜像作为基础镜像时,请考虑以下选项,以使你的程序与 Alpine Linux 和 musl 兼容
- 使用 musl libc 编译你的程序
- 将 glibc 库静态链接到你的程序中
- 完全避免 C 语言依赖(例如,构建 Go 程序时禁用 CGO)
- 在你的 Dockerfile 中自行添加所需的软件。
如果你不熟悉,请参考 Docker Hub 上的 alpine
镜像 描述,了解如何安装软件包的示例。
代号
带有看起来像《玩具总动员》角色名称(例如 bookworm、bullseye 和 trixie)或形容词(例如 focal、jammy 和 noble)的标签,表示它们用作基础镜像的 Linux 发行版代号。Debian 版本的代号基于《玩具总动员》角色,而 Ubuntu 的代号形式为“形容词 动物”。例如,Ubuntu 24.04 的代号是 "Noble Numbat"。
Linux 发行版指示符很有用,因为许多 Docker Official Images 提供基于不同底层发行版版本的变体(例如 postgres:bookworm 和 postgres:bullseye)。
其他标签
Docker Official Images 标签除了此处描述的之外,可能还包含指示其镜像变体用途的其他提示。这些标签变体通常在 Docker Official Images 仓库文档中进行解释。阅读“How to use this image”(如何使用此镜像)和“Image Variants”(镜像变体)部分将帮助你理解如何使用这些变体。
认证发布者镜像
Docker 验证出版商计划提供经 Docker 验证的商业出版商的高质量镜像。
这些镜像帮助开发团队构建安全的软件供应链,在早期阶段最大限度地减少暴露于恶意内容,以节省后续时间和金钱。
属于此计划的镜像在 Docker Hub 上有一个特殊徽章,使用户更容易识别 Docker 验证为高质量商业出版商的项目。


Docker 赞助开源软件镜像
Docker 赞助的开源软件 (OSS) 计划提供由 Docker 赞助的开源项目发布和维护的镜像。
属于此计划的镜像在 Docker Hub 上有一个特殊徽章,使用户更容易识别 Docker 验证为可信赖、安全且活跃的开源项目。

