Когда на машине работает больше десятка контейнеров, команды docker ps, docker logs и docker exec начинают выполняться почти рефлекторно. Переключение между терминалом, файлом compose и веб-панелью отнимает время, а ошибка в имени контейнера всплывает в самый неподходящий момент. lazydocker решает эту бытовую проблему: собирает контейнеры, образы, тома и сети в одном терминальном окне и позволяет управлять ими с клавиатуры, не набирая длинные команды. Ниже — установка, реальные сценарии, настройка и честная оценка ограничений.

Что такое lazydocker

Это открытая утилита с текстовым интерфейсом, написанная на Go. Она не заменяет Docker и не работает с ним в обход API: lazydocker обращается к тому же демону, что и привычный CLI, поэтому видит ровно те контейнеры, которые доступны вашему пользователю. Отдельного агента, базы данных или веб-сервера нет — один бинарник, который запускается и завершается по нажатию клавиши.

По духу инструмент близок к lazygit: несколько панелей, контекстные горячие клавиши, быстрый переход к логам и оболочке. Проекты Docker Compose он группирует по сервисам, что удобно, когда в одном каталоге поднимается сайт, база и кэш. Инструмент не предназначен для Kubernetes, Swarm или удалённых кластеров без локального демона — это важно понимать до установки.

Установка и права доступа

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

mkdir -p ~/.local/bin
curl -L https://github.com/jesseduffield/lazydocker/releases/latest/download/lazydocker_Linux_x86_64.tar.gz \
  | tar xz -C ~/.local/bin lazydocker
chmod +x ~/.local/bin/lazydocker
lazydocker --version

Убедитесь, что ~/.local/bin присутствует в PATH. Если Docker требует sudo, добавьте пользователя в группу docker и перезайдите в сессию — иначе утилита запустится, но список контейнеров будет пустым:

sudo usermod -aG docker "$USER"
newgrp docker
docker ps

Проверка через docker ps важна: lazydocker показывает только то, что доступно демону. Пустая панель почти всегда означает не отсутствие контейнеров, а проблему с правами или сокетом.

Интерфейс и навигация

Окно разделено на панели: контейнеры, образы, тома, сети, а также область логов и служебная строка. Переключение — Tab, перемещение — стрелки, выход — q, полная справка по клавишам — ?. Внутри панели контейнеров Enter открывает меню действий, d удаляет, r перезапускает, s останавливает, p ставит на паузу, l показывает логи, e открывает оболочку.

  • Containers — состояние, порты, образ, время работы; отсюда же просмотр логов и вход внутрь.
  • Images — удаление неиспользуемых образов и очистка места без похода в docker image prune.
  • Volumes — тома и их размеры; полезно перед удалением «пустого» тома, в котором лежит база.
  • Networks — сети проекта и подключённые контейнеры.

Клавиша b открывает массовые операции, x — дополнительное меню. Мышечная память вырабатывается за пару дней, после чего набирать docker ps --format уже не хочется.

Повседневные сценарии

Типичный запуск выполняется из каталога проекта, где лежит compose.yaml. Утилита сама подхватит проект и сгруппирует сервисы:

cd ~/projects/site
lazydocker

# тот же список, но без интерфейса — для сравнения
docker compose ps
docker stats --no-stream

Через интерфейс удобно смотреть логи после деплоя, перезапускать один сервис, не трогая остальные, и заходить в контейнер, чтобы проверить конфиг или доступность соседнего сервиса по имени. Для отладки сети полезно открыть оболочку и выполнить getent hosts db или curl -I http://web:80 — это быстрее, чем поднимать отдельный контейнер.

Логи и диагностика

Панель логов вызывает docker logs и умеет следовать за потоком. Если в интерфейсе не хватает фильтра, те же данные можно получить вручную:

docker logs -f --timestamps --tail 200 site-web-1
docker inspect site-web-1 --format '{{.State.Status}} {{.State.ExitCode}}'
docker exec -it site-web-1 sh
docker events --filter type=container --since 10m

Обратите внимание: lazydocker не хранит историю. Всё, что вы видите, — текущее состояние демона и последние строки журнала. Для разбора инцидента, случившегося ночью, нужен внешний сбор логов, а не терминальный интерфейс. Это ограничение стоит учитывать в продакшене.

Настройка под себя

При первом запуске создаётся файл ~/.config/lazydocker/config.yml. В нём меняются тема, язык, поведение логов и шаблоны команд. Например, чтобы не забывать про метки времени и не тянуть гигабайты истории:

gui:
  language: ru
  border: rounded
  theme:
    activeBorderColor:
      - green
      - bold
logs:
  timestamps: true
  since: 30m
commandTemplates:
  dockerCompose: docker compose

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

customCommands:
  containers:
    - name: shell
      command: docker exec -it {{ .Container.ID }} sh
      serviceNames: []

Флаг --config позволяет держать отдельные профили, например для домашней лаборатории и рабочего проекта. Это полезно, если на одной машине соседствуют разные наборы сервисов.

Ограничения и честная оценка

lazydocker — не замена Portainer или Grafana. В нём нет графиков потребления за сутки, ролей, аудита действий и работы с кластером. Утилита не подходит для командной работы: действия не логируются, а доступ определяется правами на сокет Docker, то есть фактически полными. На сервере с чужими контейнерами запускать её стоит только осознанно.

К минусам отнесём и привыкание к горячим клавишам: первое время меню приходится открывать чаще, чем хотелось бы. Зато ресурсов интерфейс почти не потребляет, по SSH работает предсказуемо, а установка сводится к копированию одного файла. Для домашней лаборатории и небольшой разработки это удачный компромисс между удобством и прозрачностью.

Итог

lazydocker закрывает узкую, но частую задачу: быстро посмотреть состояние контейнеров, прочитать лог, зайти внутрь и перезапустить сервис, не покидая терминал. Он не притворяется платформой мониторинга и не требует инфраструктуры. Если вы администрируете Docker на одной-двух машинах и цените клавиатуру, утилита окупает установку за вечер; если нужны графики, алерты и командный доступ — смотрите в сторону специализированных систем.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте