docker检查:如何从范围只select某些键

我创build了一个有很less标签的docker图像,这是我在标签上的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模板函数在golang docco中可用

eq可以testingarg1 == arg2
printf "%.3s" $k会给你一个string的前3个字符。

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

如果您需要进行更高级的处理,您可能需要直接查看Docker API 图像endpoint /images/IMAGE/json ,或者在某处处理JSON输出:

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

你可以做类似的事情

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

请参阅我之前关于该主题的回答如何在执行Docker检查时获取ENVvariables

编辑

以下给出了你所要求的

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

当我得到

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