泊坞窗,查看:如何从范围

泊坞窗,查看:如何从范围

问题描述:

只选择某些键我创建了一个具有几个标签的码头工人的形象,这里是在标签上我的Dockerfile部分:泊坞窗,查看:如何从范围

grep LABEL Dockerfile 

LABEL "css1"="/var/www/css1" 
LABEL "css2"="/var/www/css2" 
LABEL "img"="/var/www/img" 
LABEL "js"="/var/www/js" 

然后:

docker image inspect --format='{{.Config.Labels}}' labels-test 

map[css1:/var/www/css1 css2:/var/www/css2 img:/var/www/img js:/var/www/js] 

我需要例如以 css开头的所有标签。这是因为就我能推算:

docker image inspect --format='{{range $k,$v:=.Config.Labels}}{{$k}}:{{$v}} {{end}}' labels-test 

css1:/var/www/css1 css2:/var/www/css2 img:/var/www/img js:/var/www/js 

所需的输出将是:

css1:/var/www/css1 css2:/var/www/css2 

Go template functions are available in golang docco

eq可以测试是否arg1 == arg2
printf "%.3s" $k会给你一个字符串的前3个字符。

docker image inspect \ 
    --format='{{ range $k,$v:=.Config.Labels }}{{ if eq (printf "%.3s" $k) "css" }}{{ $k }}:{{ $v }} {{end}}{{end}}' \ 
    IMAGE 

,如果你需要做任何更高级的处理你可能想看看泊坞窗API images endpoint/images/IMAGE/json直接查询或地方处理JSON输出:

docker image inspect \ 
    --format='{{json .Config.Labels}}' \ 
    IMAGE 
+0

可这个手柄的正则表达式不知何故? – fflost

+0

不是我所知道的,但我不知道Go的全部。如果您有权访问Go代码,那么可以添加自定义函数,但看起来像Docker为'--format'提供的任何内容一样。 – Matt

+0

我怎样才能得到匹配的条目数量(从我的例子期望的输出将是2)? – fflost

你可以这样做

docker inspect --format='{{index (index (.Config.Labels)).css1 }}' labels-test

这显示了我

/var/www/css1

docker inspect --format='{{index (index (.Config.Labels)).css2 }}' labels-test

这显示了我

/var/www/css2

见在这个问题上我以前的答案 How to get ENV variable when doing Docker Inspect

编辑

以下给出正是你问

docker inspect --format='{{index (index (.Config.Labels)).css1 }} {{index (index (.Config.Labels)).css2 }} labels-test

什么,因为我得到

/var/www/css1 /var/www/css2

+0

我试图在开始时使用索引,但可以找出如何做css *例如: docker image inspect --format'{{index.Config.Labels“css”}}'labels-test – fflost