docker 检查 : how to select only certain keys from range

标签 docker go

我创建了一个标签很少的 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/

相关文章:

docker - Gitlab CI runner 无法暴露嵌套 Docker 容器的端口

docker - 必须采取什么措施才能在Docker上交付并避免积累镜像?

docker - 如何在 Jenkins 管道中使用多个 docker 存储库

opencv - 如何在 docker (debian :jessie)) 上为 python3.5 安装 openCV

mongodb - 使用 MongoDB 从 Golang 中的子对象数组中获取值

concurrency - 与 google go 中的 channel 共享资源

json - Golang解析输出以读取键(地形输出)

mysql - Node.js 连接到 MySQL Docker 容器 ECONNREFUSED

pointers - golang中slice的地址

go - 如何为 Go 中的行插入重用单个 Postgres DB 连接?