首页/云/云与容器速查/Dockerfile LABEL 元数据标签
容器与 Docker106 条

Dockerfile LABEL 元数据标签

给镜像附加键值元数据:版本、维护者、源码地址等。OCI 规范推荐反向域名键名,便于资产管理与自动化识别;MAINTAINER 指令已废弃。

云与容器速查云更新于 2026-10-13

Dockerfile LABEL 是什么

LABEL 给镜像附加键值形式的元数据:版本号、源码提交、构建流水线编号、维护团队等。它随镜像一起分发,推送到仓库后仍然可读,因此是资产盘点、来源追溯与合规检查的常用抓手。键名建议按 OCI 推荐的反向域名风格书写,避免团队之间重名冲突;老指令 MAINTAINER 已经废弃,维护者信息统一写进 LABEL。

基本信息

语法LABEL 键=值 键=值,多个键可用空格分隔或反斜杠续行
存储位置镜像配置的 Labels 字段,随镜像推拉保留
OCI 推荐键org.opencontainers.image 下的 title、version、revision、source、created 等
替代关系MAINTAINER 已废弃,改用 LABEL maintainer=维护人邮箱
查看docker inspect 的 Config.Labels,或镜像检查工具直接读取
缓存影响LABEL 变更会让该层之后的层缓存失效,位置靠后会减少重建成本

典型使用场景

  • 标注版本与源码提交号,出问题时能直接定位到对应代码
  • 写入构建流水线编号,把镜像与构建记录对齐
  • 镜像仓库按标签筛选,做资产盘点与版本统计
  • 合规检查要求可追溯来源:登记源码地址与构建时间
  • 由流水线自动生成标签值,避免手工维护造成信息失真

示例

示例
LABEL org.opencontainers.image.title="myapp" \
      org.opencontainers.image.version="1.2.3" \
      org.opencontainers.image.revision="9f2c1ab" \
      org.opencontainers.image.source="https://git.example.com/team/myapp" \
      maintainer="ops@example.com"   # 一行多个键,反斜杠续行
# 构建后核对:
# docker inspect --format '{{json .Config.Labels}}' myapp:1.2.3
# docker image inspect myapp:1.2.3 --format '{{index .Config.Labels "org.opencontainers.image.version"}}'

常用标签键

键含义示例值
image.title镜像名称myapp
image.version版本号1.2.3
image.revision源码提交标识9f2c1ab
image.source源码仓库地址git 仓库 URL
image.created构建时间标准时间格式的字符串
LABEL 只存在于镜像元数据中,容器里的进程读不到:需要传进进程的配置应该用 ENV 或运行时的外部配置。
标签值尽量由 CI 注入:手工维护的版本标签很快就会与实际内容不一致,反而误导排查。
镜像标签与镜像仓库自身的标签是两套东西:前者存在镜像元数据里随镜像走,后者是仓库的版本指针,排障时要分清在读哪一个。

易错点

  • 把 LABEL 当环境变量使用:容器内读不到,应用启动时找不到配置
  • 一行写多个键漏了续行反斜杠:后面的键值被当成前一个键的值
  • 把构建时间写进靠前的层:每次构建缓存全部失效,构建耗时明显上升
  • 继续使用 MAINTAINER:已被标记为废弃,镜像检查工具会提示
  • 标签值写中文或含空格却不加引号:构建解析失败或值被截断
  • 用自定义短键名如 version:容易与其他工具的同名键冲突,追溯时读到错误值

数据来源与参考

  • Docker Docs:Dockerfile reference(LABEL)
  • OCI Image Spec(annotations)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌