docker-pretty-ps — наконец-то удобный для чтения «docker ps»

в 6:42, , рубрики: devops, docker, Блог компании Флант, контейнеры, Серверное администрирование, системное администрирование

Вы не одиноки в этом мире, если вот уже долгое время не рады тому, как выглядит стандартный вывод docker ps. Хотя и существуют различные workarounds на эту тему (см. в конце материала), однажды какой-нибудь энтузиаст должен был сделать «что-то ещё»… и это произошло в наступившем 2019 году. Имя ему — docker-pretty-ps.

Задумка автора банальна донельзя: горизонтальный вывод и цвета для наглядности.

docker-pretty-ps — наконец-то удобный для чтения «docker ps» - 1

А в качестве аудитории утилиты называются «скорее разработчики, чем хардкорные 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 (убирает все перечисленные выше поля, оставляя только названия контейнеров):

    docker-pretty-ps — наконец-то удобный для чтения «docker ps» - 2

  • вывод данных в формате 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-контейнеров:

docker-pretty-ps — наконец-то удобный для чтения «docker ps» - 3

Её удобный запуск в консоли можно свести к такому алиасу:

alias ctop='docker run --rm -ti -v /var/run/docker.sock:/var/run/docker.sock quay.io/vektorlab/ctop:latest'

Помимо этого, конечно, существуют и другие — более продвинутые в своих возможностях — интерфейсы, но их описание выходит за рамки статьи. А чем пользуетесь вы?

P.S.

Читайте также в нашем блоге:

Автор: Дмитрий Шурупов

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js