Docker 推荐用 LABEL 指令添加维护者信息(替代已弃用的 MAINTAINER),支持 OCI 标准键名如 org.opencontainers.image.authors,可通过 docker inspect 验证,也可用 --label 动态注入且优先级更高。

在 Docker 中,可以通过 LABEL 指令为镜像添加维护者联系信息,这是官方推荐的标准化方式(替代已弃用的 MAINTAINER 指令)。关键在于将联系信息作为键值对写入镜像元数据,构建后可通过 docker inspect 查看。
在 Dockerfile 中使用 LABEL 设置联系信息
在构建镜像的 Dockerfile 中,使用一行或多行 LABEL 添加结构化信息。推荐使用语义清晰的键名,例如:
LABEL org.opencontainers.image.authors="dev@example.com"-
LABEL maintainer="ops-team@company.org"(兼容传统习惯,但非 OCI 标准) LABEL org.opencontainers.image.vendor="MyApp Inc."LABEL org.opencontainers.image.documentation="https://docs.example.com/image"
注意:多个 LABEL 指令会合并到同一层,不会增加镜像层数;也可合并为一行(用空格分隔),但可读性较差。
构建后验证 Labels 是否生效
构建完成后,运行以下命令检查镜像是否包含预期标签:
docker inspect --format='{{.Config.Labels}}' your-image-name:tag
或更清晰地查看特定字段:
docker inspect --format='{{index .Config.Labels "org.opencontainers.image.authors"}}' your-image-name:tag
输出应为 "dev@example.com"。若为空,说明 LABEL 未正确写入(常见于拼写错误、Dockerfile 未重新构建或缓存跳过)。
使用 docker build 的 --label 参数动态添加
不修改 Dockerfile 时,可在构建命令中通过 --label 追加标签:
docker build --label "maintainer=alice@team.dev" --label "build-date=2024-06-15" -t myapp:v1 .
该方式适合 CI/CD 流水线中注入动态信息(如 Git 提交哈希、构建时间),且优先级高于 Dockerfile 中同名 LABEL(后者会被覆盖)。
最佳实践与注意事项
为确保信息可用且规范,建议遵循以下原则:
- 优先采用 OCI Image Format Annotations 定义的标准键名(如
org.opencontainers.image.authors),提升跨平台兼容性 - 避免使用空格或特殊字符作为 label 键名;值中含空格需用引号包裹
- 不要在 LABEL 中存储敏感信息(如密码、密钥),因其随镜像分发且可被任意用户 inspect
- CI 环境中可结合
ARG实现参数化注入,例如:ARG AUTHOR_EMAIL<br>LABEL org.opencontainers.image.authors="${AUTHOR_EMAIL}"
构建时传入:docker build --build-arg AUTHOR_EMAIL="ci@auto.dev" -t app .











