使用 Docker 官方镜像
Docker 建议您在项目中使用 Docker 官方镜像。
这些镜像具有清晰的文档,可推广最佳实践,并定期更新。
Docker 官方镜像支持最常见的使用案例,非常适合 Docker 新用户。
高级用户可以从更专业的镜像变体中受益,并查看 Docker 官方镜像,作为Dockerfile
学习过程。
标签
每个 Docker 官方镜像的存储库描述都包含 Supported tags and 相应的 Dockerfile links 部分,其中列出了所有 current 标记,其中包含指向创建镜像的 Dockerfile 的链接 标签。本部分的目的是显示哪些镜像变体可用。

同一行中列出的标记都引用相同的底层镜像。倍数
标记可以指向同一镜像。例如,在上一个截取的屏幕截图中
从ubuntu
Docker 官方镜像仓库、标签24.04
,noble-20240225
,noble
和devel
都引用同一张图片。
这latest
标记通常经过优化以方便使用
并包含各种有用的软件,例如开发人员和构建工具。
通过将镜像标记为latest
,镜像维护者基本上是在建议
该镜像将用作默认镜像。换句话说,如果您不知道要用什么标签
使用或不熟悉底层软件,您可能应该从
这latest
镜像。随着您对软件和镜像变体的理解不断深入,
您可能会发现其他镜像变体更适合您的需求。
纤薄的镜像
许多语言堆栈(如 Node.js、Python 和 Ruby)都有slim
标签变体
旨在提供轻量级、生产就绪的基本镜像
包裹更少。
典型的消费模式slim
images 作为多阶段构建最后阶段的基础镜像。
例如,您在构建的第一阶段构建应用程序
使用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"]
阿尔卑斯山图片
许多 Docker 官方镜像存储库还提供alpine
变种。这些
镜像构建在 Alpine Linux 发行版之上,而不是 Debian 或 Ubuntu 之上。Alpine Linux 专注于提供
一个小型、简单且安全的容器镜像基础,以及 Docker 官方
镜像alpine
变体通常旨在仅安装必要的软件包。作为
result, Docker 官方镜像alpine
变体通常更小
比slim
变种。
需要注意的主要警告是 Alpine Linux 使用 musl libc 而不是 glibc。此外,为了 最小化镜像大小,基于 Alpine 的镜像包含工具的情况并不常见 例如 Git 或 Bash。根据 libc 要求的深度或 假设,您可能会发现自己遇到问题,因为 缺少库或工具。
当您使用 Alpine 镜像作为基础时,请按顺序考虑以下选项 要使您的程序与 Alpine Linux 和 musl 兼容,请执行以下作:
- 使用 musl libc 编译程序
- 将 glibc 库静态链接到您的程序中
- 完全避免依赖 C 语言(例如,在没有 CDO 的情况下构建 Go 程序)
- 在 Dockerfile 中添加您自己需要的软件。
请参阅alpine
图片描述
Docker Hub 有关如何安装包的示例(如果您不熟悉)。
代号
包含看起来像《玩具总动员》角色的单词的标签(例如bookworm
,bullseye
和trixie
) 或形容词(如focal
,jammy
和noble
),指示他们用作基础的 Linux 发行版的代号
镜像。Debian 发行版的代号基于《玩具总动员》中的角色,
Ubuntu 采用“形容词动物”的形式。例如,
Ubuntu 24.04 的代号是“Noble Numbat”。
Linux 发行版指标很有帮助,因为许多 Docker 官方镜像
提供基于多个底层分发版本构建的变体(对于
例postgres:bookworm
和postgres:bullseye
).
其他标签
Docker Official Images 标签可能包含其他提示,以达到 它们的 image 变体以及此处描述的变体。通常这些 标签变体在 Docker 官方镜像存储库中进行了解释 文档。通读 “如何使用此镜像” 和 “镜像变体”部分将帮助您了解如何使用这些 变种。