Docker 生产环境之配置对象 - 配置对象使用自定义元数据

原文地址

标签(label)是一种将元数据应用于 Docker 对象的机制,包括:

  • Images
  • Containers
  • Local daemons
  • Volumes
  • Networks
  • Swarm nodes
  • Swarm services

可以使用标签来组织镜像,记录许可信息,注释容器、卷和网络之间的关系,或以任何对你的业务或应用程序有意义的方式进行。

1. 标签的键和值

标签是键值对,存储为字符串。可以为一个对象指定多个标签,但是同一个对象中的键值对必须独一无二。如果同一个键指定了多个值,后面的值会覆盖前面的。

1.1 建议使用的键格式

标签的键是键值对中左边的元素。键是可以包含句点(.)和中横线(-)的字母数字字符串。大多数 Docker 用户使用由其他组织创建的镜像,并且以下指导原则有助于防止无意间的跨对象重复标签,特别是如果你打算将标签用作自动化机制。

  • 第三方工具的作者应在每个标签的键前加上他们的域名的倒序 DNS 标记,如 com.example.some-label
  • 未经域名所有者许可,请勿在标签的键中使用这个域名。
  • com.docker.*io.docker.*org.dockerproject.* 命名空间是 Docker 保留用于内部使用的。
  • 标签键应以小写字母开头和结尾,并且只能包含小写字母数字字符,句点字符(.)和连字符(-)。不允许连续的句点或连字符。
  • 句点字符(.)分隔命名空间“字段”。没有命名空间的标签的键被保留用于 CLI 使用,允许CLI的用户使用更短的键入友好字符串交互地标记Docker对象。

这些准则目前尚未实施,对于特定用例会需要更多的规则。

1.2 值的规则

标签的值可以包含任意能表示为字符串的数据类型,包括但不限于 JSON、XML、CSV 或 YAML。唯一要求是必须使用特定于结构类型的机制将值序列化为字符串。例如,要将 JSON 序列化为字符串,可以使用JavaScript 中的 JSON.stringify() 方法。

由于 Docker 并未反序列化该值,因此在按标签值查询或过滤时,不能将 JSON 或 XML 文档视为嵌套结构,除非你将此功能构建到第三方工具中。

2. 管理对象上的标签

支持标签的每种类型的对象都具有添加和管理标签的机制,并可以在该类型对象上使用它们。这些链接提供了一个开始学习如何在 Docker 部署中使用标签的好地方。

镜像、容器、本地守护进程、卷和网络上的标签在对象的生命周期内是静态的。必须要重新创建对象才能改变这些标签。swarm 节点和服务上的标签可以动态更新。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值