Как я могу получить метку изображения Docker, если имя метки имеет ".". в этом?

Команда проверки докеров может быть очень полезна для получения меток на изображении Docker:

# -*- Dockerfile -*-
FROM busybox
LABEL foo="bar"
LABEL com.wherever.foo="bang"

Для простых имен ярлыков команда проверки имеет параметр --format (который использует шаблоны Go), который работает хорошо.

$ docker build -t foo .
$ docker inspect -f '{{ .Config.Labels.foo }}' foo
bar

Но как мне получить доступ к меткам, у которых есть точка в их имени?

$ docker inspect -f '{{ .Config.Labels.com.wherever.foo }}' foo
<no value>

Я пишу это в bash script, где я бы хотел избежать повторного анализа вывода JSON из docker inspect, если это возможно.

Ответы

Ответ 1

Функция index - это то, что я искал. Он может искать произвольные строки на карте.

$ docker inspect -f '{{ index .Config.Labels "com.wherever.foo" }}' foo
bang