Files
docker_practice/07_dockerfile/7.14_label.md
Baohua Yang 175aaae48a style(docs): standardize heading formats and numbering
- Enforce Level 1-3 structural numbering based on SUMMARY.md hierarchy
- Remove structural numbering from Level 4+ headings
- Eliminate single child headings by converting to bold text
- Auto-inject summary text for headings with multiple children missing intro text
- Exclude Appendix chapters from structural numbering
- Avoid modifying code block contents
- Add script to detect non-standard English usage in headers
2026-02-21 22:40:33 -08:00

3.9 KiB
Raw Blame History

7.14 LABEL 为镜像添加元数据

本节涵盖了相关内容与详细描述,主要探讨以下几个方面:

7.14.1 基本语法

如下代码块所示,展示了相关示例:

LABEL <key>=<value> <key>=<value> ...

LABEL 指令以键值对的形式给镜像添加元数据。这些数据不会影响镜像的功能,但可以帮助用户理解镜像,或被自动化工具使用。


7.14.2 为什么需要 LABEL

  1. 版本管理记录版本号、构建时间、Git Commit ID
  2. 联系信息:维护者邮箱、文档地址、支持渠道
  3. 自动化工具CI/CD 工具可以读取标签触发操作
  4. 许可证信息:声明开源协议

7.14.3 基本用法

本节涵盖了相关内容与详细描述,主要探讨以下几个方面:

定义单个标签

如下代码块所示,展示了相关示例:

LABEL version="1.0"
LABEL description="这是一个 Web 应用服务器"

定义多个标签 (推荐)

如下代码块所示,展示了相关示例:

LABEL maintainer="user@example.com" \
      version="1.2.0" \
      description="My App Description" \
      org.opencontainers.image.authors="Yeasy"

💡 包含空格的值需要用引号括起来。


7.14.4 常用标签规范

为了标准和互操作性,推荐使用 OCI Image Format Specification 定义的标准标签:

标签 Key 说明 示例
org.opencontainers.image.created 构建时间(RFC 3339) 2024-01-01T00:00:00Z
org.opencontainers.image.authors 作者/维护者 support@example.com
org.opencontainers.image.url 项目主页 https://example.com
org.opencontainers.image.documentation 文档地址 https://example.com/docs
org.opencontainers.image.source 源码仓库 https://github.com/user/repo
org.opencontainers.image.version 版本号 1.0.0
org.opencontainers.image.licenses 许可证 MIT
org.opencontainers.image.title 镜像标题 My App
org.opencontainers.image.description 描述 Production ready web server

概述

总体概述了以下内容。

示例

如下代码块所示,展示了相关示例:

LABEL org.opencontainers.image.authors="yeasy" \
      org.opencontainers.image.documentation="https://yeasy.gitbooks.io" \
      org.opencontainers.image.source="https://github.com/yeasy/docker_practice" \
      org.opencontainers.image.licenses="MIT"

7.14.5 MAINTAINER 指令 (已废弃)

旧版本的 Dockerfile 中常看到 MAINTAINER 指令:

## ❌ 已弃用

MAINTAINER user@example.com

现在推荐使用 LABEL

## ✅ 推荐

LABEL maintainer="user@example.com"
## 或

LABEL org.opencontainers.image.authors="user@example.com"

7.14.6 动态标签

配合 ARG 使用,可以在构建时动态注入标签:

ARG BUILD_DATE
ARG VCS_REF

LABEL org.opencontainers.image.created=$BUILD_DATE \
      org.opencontainers.image.revision=$VCS_REF

构建命令:

$ docker build \
  --build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') \
  --build-arg VCS_REF=$(git rev-parse --short HEAD) \
  .

7.14.7 查看标签

本节涵盖了相关内容与详细描述,主要探讨以下几个方面:

docker inspect

查看镜像的标签信息:

$ docker inspect nginx --format '{{json .Config.Labels}}' | jq
{
  "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
}

过滤器

可以使用标签过滤镜像:

## 列出作者是 yeasy 的所有镜像

$ docker images --filter "label=org.opencontainers.image.authors=yeasy"

## 删除所有带有特定标签的镜像

$ docker rmi $(docker images -q --filter "label=stage=builder")