Docker容器
当容器以docker run方式运行时,可以给容器添加标签。一个容器在任何一个时刻可以有多个标签。
注意这个例子,我们是在CLI里使用标签,而不是使用自动化工具,所以标签并没有使用DNS标记格式。
单标签
添加单标签需要使用选项l =
1 | docker run -l user=12345 -d redis |
外部文件
可以使用外部文件的方式来添加多个标签。外部文件中要没行有一个标签,这些标签会被添加到容器中。
下面的语句会添加2个标签,一个是user一个是role。
1 | echo 'user=123461' >> labels && echo 'role=cache' >> labels |
选项*-label-file=
1 | docker run --label-file=labels -d redis |
Docker镜像
镜像的标签和容器的标签的作用相同,不过镜像的标签是写在Dockerfile中的。当容器加载时,镜像的标签会应用到容器实例上。
单标签
在Dockerfile中可以使用LABEL 指令设置标签。
1 | LABEL vendor=Katacoda |
多标签
要想设置多标签,使用下面的格式。 (“\“)用来分割。注意使用DNS格式来关联第三方工具。
1 | LABEL vendor=Katacoda \ com.katacoda.version=0.0.5 \ com.katacoda.build-date=2016-07-01T10:47:29Z \ com.katacoda.course=Docker |
查看详细
标签和元数据仅用来查询或者查看。第一个方法就是用 docker inspect 来查看特定的容器或者镜像。
任务
假设环境中已经有了一个容器叫 rd,和一个镜像叫 katacoda-label-example。
容器
根据容器的名字或者hash id,可以查看容器的全部的元数据。
1 | docker inspect rd |
使用*-f*选项可以指定显示的JSON结果里仅显示Lable的信息。
1 | docker inspect -f "{{json .Config.Labels }}" rd |
镜像
查看镜像的Lable与容器的方式一致,但是略有不同。使用ContainerConfig而不是Config。
1 | docker inspect -f "{{json .ContainerConfig.Labels }}" katacoda-label-example |
这些标签会一直存在,即便在镜像被撤掉标签后,撤掉标签后这个信息会是*
根据标签查询
查看容器或者镜像的容器可以提供很多有用的信息,但是在生产环境中上千个容器中,使用标签来限定返回的个数会很有用。
过滤容器
使用 docker ps 可以根据lable来过滤指定容器。下面的例子就是过滤lable是user,值是katacoda的容器。
1 | docker ps --filter "label=user=scrapbook" |
过滤镜像
使用同样的方式过滤镜像。
1 | docker images --filter "label=vendor=Katacoda" |
注意
过滤时使用的key和value都是大小写敏感的。
Daemon标签
标签也可以应用于Docker的daemon上。当启动一个daemon实例时,可以指定标签,例如在开发服务器或者生产服务器上,指定daemon的角色会是不错的选择。
再之后我们会探讨更多的关于Docker配置和标签使用的更多内容。这里我们简单看一下格式:
1 | docker -d \ |