在 Docker 中,标签(Label)是一种为对象附加自定义元数据的方式,可用于标识、分类和管理不同资源。
标签可以应用在多种 Docker 对象上,包括:
- 镜像
- 容器
- 本地守护进程
- 数据卷
- 网络
- 集群节点
- 集群服务
通过标签,您可以更方便地组织镜像、记录许可证信息、说明容器与卷或网络之间的关系,也可以按照业务场景或应用需求定义自己的标记规则。
标签的基本结构
标签采用键值对形式保存,键和值都会以字符串方式存储。一个对象上可以设置多个标签,但同一个对象中,每个标签键必须保持唯一。
如果为同一个键重复设置不同的值,后一次写入的内容会覆盖之前的值。
标签键的命名建议
标签键位于键值对的左侧,通常由字母数字字符组成,也可以包含句点(.)和连字符(-)。由于很多用户会使用第三方镜像或工具,合理设计标签键有助于避免在不同对象之间发生意外冲突,尤其是在标签参与自动化流程时更为重要。
为了减少命名冲突,通常建议第三方工具作者使用自己所拥有域名的反向 DNS 格式作为标签前缀。
例如,在未获得授权的情况下,不应在标签键中使用不属于自己的域名。
此外,某些命名空间是保留给 Docker 内部使用的,不建议自行占用。
标签键的格式规则
标签键通常应遵循以下约定:
- 以小写字母开头,并以小写字母结束
- 仅包含小写字母、数字、句点和连字符
- 不应出现连续的句点或连续的连字符
其中,句点通常用于分隔命名空间字段。没有命名空间前缀的标签键,一般保留给命令行交互场景使用,便于用户通过更简短的名称为 Docker 对象打标签。
补充说明
上述规则更多属于推荐性约定,目前不一定会被系统强制校验。根据不同的实际场景,还可能存在更适合的命名规范或使用方式。
