我正在学习码头工具。我想弄清楚Docker label可以解决什么样的问题。
我可以理解为什么use label in Dockerfile,例如添加与构建相关的元数据,但我仍然不知道为什么using it在docker-compose.yml中?使用标签与environment之间有什么区别?我假设会有不同的用例,但我无法弄明白。
有人可以给我一些实际的例子吗?
由于
答案 0 :(得分:1)
docker-compose.yml来构建和运行您在docker-compose.yml
中定义的服务
在使用docker-compose时,我们可以使用两件事
docker-compose build
这将构建在docker-compose.yml
下定义的服务,但是如果要运行{{1},则要运行此服务,它必须具有与docker-engine
相同的映像。 },您将找到由docker image ls
构建的图像,并在其中进行检查,您会发现docker-compose
,该图像定义了该特定图像的元数据。 label
将运行在docker-compose up
中建立的服务,现在此运行容器必须具有一些docker-container build
之类的元数据,该元数据在{{ 1}} P.S。 :-这是我在堆栈溢出中的第一个答案。如果您没收到评论,我会尽力向您解释。
答案 1 :(得分:1)
在labels
中使用docker-compose
的另一个原因是将您的containers
标记为此 docker-compose容器套件的一部分,这与其他目的相反每个码头工人image
都可能会习惯。
这是一个示例docker-compose.yml,该示例在两个服务之间共享标签:
x-common-labels: &common-labels
my.project.environment: "my project"
my.project.maintainer: "me@example.com"
services:
s1:
image: somebodyelse/someimage
labels:
<<: *common-labels
# ...
s2:
build:
context: .
image: my/s2
labels:
<<: *common-labels
# ...
然后,您可以执行此类操作以杀死该项目的容器。
docker rm -f $(docker container ls --format "{{.ID}}" --filter "label=my.project.environment")
标签仅适用于主机上的docker
和docker-compose
命令。
运行时环境 在docker容器中也可以使用环境变量。
答案 2 :(得分:0)
LABEL可用于嵌入有关Docker映像的尽可能多的元数据,从而使其更易于使用。
将LABEL添加到Docker映像的一些主要目的是:
作为文档。
您可以提供作者,描述,使用说明的链接等。
用于版本控制。
您可以确保即使具有相同的latest
标签的某些新功能也适用于某些版本,因此可能不会破坏某些旧的现有功能。
任何其他用于程序访问的元数据。
此page提供了Docker LABEL的指南和最常用的用法。