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