docker
August 21, 2023

Docker -  форматированный вывод информации о контейнерах

Обычный вывод о запущенном контейнере:

> $ docker inspect dbe556947aef

Такая команда выведет вс информацию в stdout

Есть другой вариант:

> $ docker inspect --format='{{json .}}'  dbe556947aef

Такой вывод будет в виде JSON, который можно обработать через jq:

> $ docker inspect --format='{{json .}}'  antipy_postgres_test | jq .Id
"dbe556947aefcc8f02e195a903a3e894a3ca532952ce373a47708b552cef7d71"

Но еще удобнее прсить запрос сразу же в команде docker inspect:

> $ docker inspect --format='{{json .Config.Labels.maintainer}}'  dbe556947aef
"PostGIS Project - https://postgis.net"

Но есть проблема, если ключ содержить побелы или точки в имени, то такой подход не сработает, например если мы попытаемся забрать значение "com.docker.compose.config-hash" из
.Config.Labels.maintainer."com.docker.compose.config-hash":

> $ docker inspect --format='{{json .Config.Labels.com.docker.compose.config-hash}}'  dbe556947aef                                                                                                                  
template parsing error: template: :1: bad character U+002D '-'

> $ docker inspect --format='{{json .Config.Labels.["com.docker.compose.config-hash"]}}'  dbe556947aef                                                                                                              
template parsing error: template: :1: bad character U+005B '['

Решение: Использовать в таких случаях index:

> $ docker inspect dbe556947aef -f '{{index .Config.Labels "com.docker.compose.config-hash"}}'                                                                                                                      
4ee3f97c83ef9c92e29b809eac2ac70aa53bbf0862c01da9c258580428aecd99

Подробнее обо всех способах вывода в Docker:

https://docs.docker.com/config/formatting/