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