我创建了一个标签很少的 docker 镜像,这是我在 LABELS 上的 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
您可能想查看查询 Docker API images endpoint /images/IMAGE/json
直接或在某处处理 JSON 输出,如果您需要进行任何更高级的处理:
docker image inspect \
--format='{{json .Config.Labels}}' \
IMAGE
关于 docker 检查 : how to select only certain keys from range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47364777/