label指令用于在docker镜像中添加键值对元数据,如版本、作者、许可证等,不影响运行行为,但提升管理、审计、ci/cd和合规能力;支持单行或多行写法,推荐用空格分隔或反斜杠换行,维护者常用maintainer或org.opencontainers.image.authors,可通过docker inspect查看,需避免敏感信息并统一键名前缀。

LABEL 指令用于在 Docker 镜像中添加键值对形式的元数据,比如版本号、作者、许可证、构建时间、维护者邮箱等。它不会影响镜像运行行为,但对镜像管理、审计、CI/CD 集成和安全合规非常有用。
基本语法与写法
LABEL 支持单行或多行写法,推荐用空格分隔多个键值对,或用反斜杠换行提高可读性:
- 单行写法:LABEL maintainer="dev@example.com" version="1.2.0" license="MIT"
- 多行写法(更清晰):
LABEL maintainer="ops@company.org" \
version="v2.1.3" \
description="Production API service" \
build-date="2024-06-15"
维护者信息的常用键名
Docker 官方已不推荐使用过时的 MAINTAINER 指令(自 Docker 1.13+ 起弃用),统一改用 LABEL。常见维护相关键名包括:
-
maintainer:最通用,值建议为邮箱或“姓名
”格式,如 "Jane Doe " -
org.opencontainers.image.authors:符合 OCI 标准,支持 JSON 数组格式(需在构建时用
docker build --label或在 Dockerfile 中用 JSON 字符串) - org.opencontainers.image.vendor 和 org.opencontainers.image.url:适合企业级镜像标识归属与文档地址
查看与验证 LABEL 内容
构建完成后,可用以下命令检查是否生效:
- 查看镜像所有 LABEL:docker inspect --format='{{json .Config.Labels}}' your-image-name
- 只查某个字段,例如维护者:docker inspect --format='{{.Config.Labels.maintainer}}' your-image-name
- 构建时覆盖 LABEL(适用于 CI 场景):docker build --label "build-id=ci-12345" -t app .
最佳实践建议
- 避免敏感信息:不要在 LABEL 中写密码、密钥、内部 IP 或未脱敏的路径
- 保持键名一致性:团队内约定前缀(如 com.company. 或 org.example.),防止冲突
- 结合 ARG 动态注入:可在构建时传入变量,让 LABEL 更灵活
ARG BUILD_VERSION
LABEL version="${BUILD_VERSION}" commit-hash="${GIT_COMMIT}" - 多个 LABEL 指令会被合并:Dockerfile 中多个 LABEL 行最终会合并在一个 Labels 字典里,无需担心覆盖问题











