docker-pretty-ps — наконец-то удобный для чтения «docker ps»
Вы не одиноки в этом мире, если вот уже долгое время не рады тому, как выглядит стандартный вывод docker ps
. Хотя и существуют различные workarounds на эту тему (см. в конце материала), однажды какой-нибудь энтузиаст должен был сделать «что-то ещё»… и это произошло в наступившем 2019 году. Имя ему — docker-pretty-ps.
Задумка автора банальна донельзя: горизонтальный вывод и цвета для наглядности.
А в качестве аудитории утилиты называются «скорее разработчики, чем хардкорные DevOps’ы или SRE-инженеры».
Возможности
С внешним видом всё должно быть понятно из картинки. Что позволяет утилита в смысле функций? По умолчанию выводятся все запущенные контейнеры, но этим, конечно, возможности не ограничиваются — в docker-pretty-ps поддерживается:
- вывод всех контейнеров (включая остановленные);
- поиск контейнеров по шаблону:
docker-pretty-ps my,try
выведет контейнеры, в названии которых найдены*my*
и*try*
(например,docker-registry
иmysql-redmine
); - несколько опций сортировки;
- настраиваемые поля вывода для каждого контейнера (доступны:
container_id
,created
,ports
,image_id
,status
,command
); - компактный режим вывода
slim
(убирает все перечисленные выше поля, оставляя только названия контейнеров): - вывод данных в формате JSON.
Установка
Код проекта написан на Python и авторы отдельно отмечают, что сторонние Python-пакеты не используются, поэтому для запуска достаточно иметь в системе Docker и Python, что справедливо для многих.
Установка осуществляется через pip:
pip install docker-pretty-ps
… или же простой сборкой:
git clone https://github.com/politeauthority/docker-pretty-ps.git
cd docker-pretty-ps
python3 setup.py build
python3 setup.py install
Всё — можно пользоваться:
$ docker-pretty-ps -h
usage: docker-pretty-ps [-h] [-a] [-s] [-i INCLUDE] [-o [ORDER]] [-r] [-j]
[-v]
[search]
positional arguments:
search Phrase to search containers, comma separate multiples.
optional arguments:
…
Другие workarounds
Несмотря на широкую поддержку на Reddit, эта утилита подойдёт, безусловно, не всем. В частности, если у вас много контейнеров (десятки и более), то даже использование режима slim
не всегда будет удобным. И тогда более полезным может оказаться один из известных уже давно workaround’ов.
docker ps --format
Опция форматирования для docker ps
— это не просто workaround, но и в некотором смысле лучшее решение, т.к. не требует ничего дополнительного в смысле установки в системе.
Аргумент --format
принимают многие команды Docker, позволяя (через go-template) настроить их вывод под себя. Для команды docker ps
его поддержка появилась уже давно (в релизе Docker 1.8 от августа 2015 г.). Вот пример её использования:
[flant] d.shurupov@kube-node-test ~ $ sudo docker ps --format 'table {{.Names}}\t{{.Image}}'
NAMES IMAGE
k8s_fluentd_fluentd-jmzjd_loghouse… flant/loghouse-fluentd…
k8s_cert-manager_cert-manager-… quay.io/jetstack/cert-manager-controller…
k8s_prometheus-config-reloader_… 597141b113d9
k8s_prometheus_prometheus-main-… cc866859f8df
k8s_POD_prometheus-main-0_kube-… k8s.gcr.io/pause-amd64:3.1
…
(NB: В приведённом выше примере вручную были обрезаны полные названия контейнеров и образов — для лучшей наглядности.)
Подробности о работе с --format
можно найти, например, в этой статье, а примеры доступных функций — в документации Docker.
ctop
Пожалуй, даже более популярный путь — использование утилиты ctop, которая предлагает интерфейс, похожий на классический top
, но для Docker-контейнеров:
Её удобный запуск в консоли можно свести к такому алиасу:
alias ctop='docker run --rm -ti -v /var/run/docker.sock:/var/run/docker.sock quay.io/vektorlab/ctop:latest'
Помимо этого, конечно, существуют и другие — более продвинутые в своих возможностях — интерфейсы, но их описание выходит за рамки статьи. А чем пользуетесь вы?
P.S.
Читайте также в нашем блоге: