проверка docker — форматирование вывода в виде таблицы

#docker #formatting #command-line-interface #command-line-arguments

#docker #форматирование #интерфейс командной строки #аргументы командной строки

Вопрос:

Как использовать --format опцию docker inspect , чтобы получить его вывод в виде таблицы. Следуя документации, которую я использовал --format 'table ...' в качестве опции, docker ps и она работала нормально, но docker inspect , похоже, игнорирует ее.

пример:

 echo "docker ps as table"
docker ps -a --format 'table {{.Names}}t{{.Image}}'

echo "docker inspect as table"
docker ps --quiet | xargs --no-run-if-empty docker inspect 
--format 'table {{.Name}}t{{.Config.Image}}'
 

выдает вывод:

 docker ps as table
NAMES                     IMAGE
tmp-php-7.3-cli-buster    tmp-php:7.3-cli-buster
tmp-mysql-8.0.19-client   mysql:8
tmp-mysql-8.0.19          tmp-mysql:8.0.19
tmp-nginx-1.17.8          tmp-nginx:1.17.8
tmp-php-7.3-fpm-buster    tmp-php:7.3-fpm-buster
tmp-node-13.8.0-buster    tmp-node:13.8.0-buster
docker inspect as table
table /tmp-php-7.3-cli-busterttmp-php:7.3-cli-buster
table /tmp-mysql-8.0.19-clienttmysql:8
table /tmp-mysql-8.0.19ttmp-mysql:8.0.19
table /tmp-nginx-1.17.8ttmp-nginx:1.17.8
table /tmp-php-7.3-fpm-busterttmp-php:7.3-fpm-buster
table /tmp-node-13.8.0-busterttmp-node:13.8.0-buster
 

Ответ №1:

Похоже docker inspect , в настоящее время невозможно выводить таблицы, см. Эту Проблему на GitHub:

Я попал сюда, потому что я тоже пытался вывести таблицу, но, к сожалению, все, что я могу сделать, это процитировать комментарий к проблеме:

TLDR; docker inspect обрабатывает вывод JSON и, следовательно, шаблоны вывода JSON, в отличие от строк форматирования, которые вы ожидаете от других команд (таких как docker stats )

По сути, именно поэтому таблица работает не так, как ожидалось, и возвращается как необработанная.

Ответ №2:

Мне удалось получить «табличный» вывод, похожий на docker stats . В основном с помощью column команды.

Например, с помощью этой команды:

 docker inspect $(docker ps -q) --format "{{.Name}} {{.Config.User}}" | column -t -s ' '
 

Или, если вам также нужны какие-то причудливые заголовки:

 (echo "NAME USER"; docker inspect $(docker ps -q) --format "{{.Name}} {{.Config.User}}") | column -t -s ' '