四时宝库

程序员的知识宝库

Docker对象标签label(docker对象存储)

Docker对象标签(labels)是一种将元数据应用于Docker对象的机制。可使用标签来组织镜像,记录许可信息,注释容器,卷和网络之间的关系。本文仅简述镜像、容器、卷以及网络标签及其使用。

标签构成

标签是由键(keys)和值(Values)组成,是键值对,键和值均存储为字符串。可以为某个Docker对象指定多个标签,但每个键值对在对象中必须是唯一的。如果给同一个键赋予多个值,则最后写入的值将覆盖所有前面的值。

键是包含字母和数字的字符串,可以包含句点(.)和连字符(-)。大多数Docker用户均使用来自其他组织创建的镜像或其他Docker对象,如果计划采用标签作为自动化机制,为了防止对象重复标记,一般遵循如下的标签策略:

1. 标签键应以小写字母开头和结尾,并且只应包含小写字母和数字字符,句点字符(.)和连 字符(-),不允许连续的句号或连字符。

2. 名称空间或域名是用句点字符(.)分隔。如:镜像标签的Key的前缀通常使用组织许可的反向域名,如com.example.some-label 。

3. com.docker.*, io.docker.*, and org.dockerproject.*是Docker内部使用保留的,不可使用。

4. 不带名称空间的标签键保留供CLI(Command-Line Interfaces)使用,通俗讲就是在CLI命令中使用较短的字符串(不要以句点分隔)以交互方式标记Docker对象。

管理标签

1. 镜像和容器

1.1给镜像添加标签

在构建镜像时,Dockerfile文件中使用LABEL命令,格式如下:

LABEL <key>=<value> <key>=<value> <key>=<value> ...

例如:

LABEL "com.example.vendor"="ACME Incorporated"

LABEL com.example.label-with-value="foo"

LABEL version="1.0"

LABEL description="This text illustrates \

that label-values can span multiple lines."

一个镜像可以有多个标签,如:

LABEL multi.label1="value1" multi.label2="value2" other="value3"

1.2 在运行时覆盖容器的标签

在启动容器时,使用-l, --label, --label-file参数,可以同时添加多个标签。

以下是一些示例:

docker run -dit -l myLabel --name my_alpine alpine ash

还可以通过label文件给容器添加标签,如下:

docker run --label-file ./labels ubuntu bash

label-file文件的格式如下:

com.example.label1="a label"

# this is a comment

com.example.label2=another\ label

com.example.label3

1.3检查镜像或容器上的标签

使用docker inspect命令,格式如下:

docker inspect [OPTIONS] NAME|ID [NAME|ID...]

myLabel是1.2中给容器添加的标签,查询标签情况如下:

1.4按标签过滤镜像

使用带参数-f 或 --filter 的docker images命令,格式为:

docker images -f label=<key> or label=<key>=<value>

如以下示例:

docker images -f label=my_Lable

1.5按标签过滤容器

使用带参数-f 或 --filter 的docker ps命令,格式为:

docker ps -f label=<key> or label=<key>=<value>

示例:查询1.3中添加的myLabel标签容器

docker ps --filter label=myLabel

2. 数据卷

2.1向卷添加标签

使用带有参数--label的docker volume create命令,示例如下:

2.2检查卷的标签

使用docker volume inspect命令,示例如下:

2.3按标签过滤卷

使用带参数-f 或 --filter 的docker volume ls命令,示例如下:

docker volume ls --filter label=owner 或

docker volume ls --filter label=owner=myVolume

3. 网络

3.1向网络添加标签

使用带有参数--label的docker network create命令,示例如下:

docker network create -d bridge --label syRoy my-bridge-network

3.2检查网络的标签

使用docker network inspect命令,格式如下:

docker network inspect [OPTIONS] NETWORK [NETWORK...]

以下是一个示例:

docker network inspect 07e1c11a97ef

3.3按标签过滤网络

使用带参数-f 或 --filter 的docker network ls命令,示例如下:

今天的分享就到这里,欢迎大家关注,收藏,转发,评论。谢谢大家支持!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接