Обзор
dtop предоставляет исчерпывающую сводку по всем Docker-контейнерам, запущенным в вашей системе, — прямо в терминале. Мгновенно получайте информацию о статусе контейнеров, потреблении ресурсов и ключевых метриках, не выходя из командной строки. Утилита поддерживает подключение по SSH, TCP и локальное соединение, а также интегрируется с Dozzle для просмотра логов контейнеров.
Возможности
-
💻 Мониторинг в реальном времени — живые обновления статуса и метрик контейнеров
-
⚡ Лёгкость — молниеносно быстрая и лёгкая утилита, написанная на Rust
-
🌍 Поддержка нескольких хостов — мониторинг контейнеров на нескольких хостах одновременно
-
🔍 Dozzle — открытие ссылок Dozzle с помощью горячих клавиш
-
📝 Потоковые логи — просмотр логов контейнеров в реальном времени
Дорожная карта
-
✓ Сортировка контейнеров по имени и статусу
-
✓ Потоковый просмотр логов (базовый)
-
✓ Поддержка прокрутки мышью
-
✓ Поддержка TLS-сертификатов через
DOCKER_CERT_PATH -
✓ Адаптивные столбцы для узкого экрана
-
✓ Остановка, запуск и удаление контейнеров
-
✓ Поддержка статуса health для контейнеров
-
✓ Поиск и фильтрация контейнеров
-
✓ Простой разбор и форматирование JSON
-
✓ Настраиваемые столбцы с сохранением предпочтений
-
✓ Поддержка дискового ввода-вывода (disk IO)
-
❏ Поддержка кластеров Kubernetes
Установка
dtop можно установить через несколько пакетных менеджеров или загрузив бинарный файл напрямую.
Homebrew
Установка через Homebrew для macOS или Linux (рекомендуется):
brew install dtop
|
Примечание
|
Homebrew рекомендуется, поскольку |
Docker
dtop публикуется как Docker-образ. Его можно получить с GitHub.
docker run -v /var/run/docker.sock:/var/run/docker.sock -it ghcr.io/amir20/dtop
На данный момент образ доступен для архитектур amd64 и arm64.
Скрипт установки
Загружает последний релиз с GitHub.
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/amir20/dtop/releases/latest/download/dtop-installer.sh | sh
Nix
Запуск без установки:
nix run github:amir20/dtop
Или установка в профиль:
nix profile install github:amir20/dtop
Для NixOS или home-manager добавьте в конфигурацию:
# В inputs вашего flake
inputs.dtop.url = "github:amir20/dtop";
# Затем используйте
inputs.dtop.packages.${system}.default
Установка из исходников
dtop написан на Rust и устанавливается через Cargo.
cargo install dtop
Самообновление
dtop имеет встроенный механизм самообновления (self-update) для перехода на последнюю версию:
dtop update
Эта команда выполняет следующее:
-
Проверяет наличие новой версии в релизах GitHub
-
Загружает и устанавливает обновление, если доступна более новая версия
-
Автоматически заменяет текущий бинарный файл новым
|
Примечание
|
Самообновление доступно только для бинарных файлов, установленных через скрипт установки или загруженных из релизов GitHub. Docker-образы следует обновлять путём загрузки свежего образа, а установки через Cargo — командой |
Параметры командной строки
По умолчанию dtop подключается к локальному демону Docker через /var/run/docker.sock. Также поддерживается переменная окружения DOCKER_HOST для подключения к удалённым хостам.
❯ dtop --help
A terminal-based Docker container monitoring tool with real-time CPU and memory metrics
Usage: dtop [OPTIONS] [COMMAND]
Commands:
update Update dtop to the latest version
help Print this message or the help of the given subcommand(s)
Options:
-H, --host <HOST>
Docker host(s) to connect to. Can be specified multiple times.
Examples:
--host local (Connect to local Docker daemon / active Docker context)
--host unix:///path/docker.sock (Connect to a specific Unix socket)
--host ssh://user@host (Connect via SSH)
--host ssh://user@host:2222 (Connect via SSH with custom port)
--host tcp://host:2375 (Connect via TCP to remote Docker daemon)
--host tls://host:2376 (Connect via TLS)
--host local --host ssh://user@server1 --host tls://server2:2376 (Multiple hosts)
For TLS connections, set DOCKER_CERT_PATH to a directory containing:
key.pem, cert.pem, and ca.pem
"local" follows the Docker CLI's endpoint resolution: it honors DOCKER_HOST,
DOCKER_CONTEXT, and the active `docker context` from ~/.docker/config.json.
If not specified, will use config file or default to "local"
-i, --icons <ICONS>
Icon style to use for the UI
Options:
unicode - Standard Unicode icons (default, works everywhere)
nerd - Nerd Font icons (requires Nerd Font installed)
-f, --filter <FILTER>
Filter containers (can be specified multiple times)
Examples:
--filter status=running
--filter name=nginx
--filter label=com.example.version=1.0
--filter ancestor=ubuntu:24.04
Multiple filters of the same type use OR logic:
--filter status=running --filter status=paused
Different filter types use AND logic:
--filter status=running --filter name=nginx
Available filters:
id, name, label, status, ancestor, before, since,
volume, network, publish, expose, health, exited
Note: Some filters only work with container listing, not events.
Warnings will be shown if a filter is incompatible with events.
-a, --all
Show all containers (default shows only running containers)
By default, dtop only shows running containers.
Use this flag to show all containers including stopped, exited, and paused containers.
Note: This flag can only enable showing all containers, not disable it.
If your config file has 'all: true', you'll need to edit the config file
or press 'a' in the UI to toggle back to showing only running containers.
This is equivalent to pressing 'a' in the UI to toggle show all.
-s, --sort <SORT>
Default sort field for container list
Options:
uptime - Sort by container uptime/creation time (default, newest first)
name - Sort by container name (alphabetically)
cpu - Sort by CPU usage (highest first)
memory - Sort by memory usage (highest first)
You can also use short forms: u, n, c, m
The sort direction can be toggled in the UI by pressing the same key again.
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
Файл конфигурации
dtop поддерживает как флаги командной строки, так и файл конфигурации. Файл конфигурации ищется в следующих местах (в порядке приоритета):
-
./config.yamlили./config.yml -
./.dtop.yamlили./.dtop.yml -
~/.config/dtop/config.yamlили~/.config/dtop/config.yml -
~/.dtop.yamlили~/.dtop.yml
|
Примечание
|
Поддерживаются оба расширения: |
Пример конфигурации:
# Мониторинг продакшн-серверов с фильтрами и интеграцией Dozzle
hosts:
- host: ssh://user@prod-server1
dozzle: https://dozzle.prod-server1.com/
filter:
- status=running
- label=environment=production
- host: ssh://user@prod-server2
dozzle: https://dozzle.prod-server2.com/
filter:
- status=running
- label=environment=production
# Использовать иконки Nerd Font для улучшенного отображения
icons: nerd
Или мониторинг конкретных стеков приложений:
# Среда разработки — показывать только здоровые веб-сервисы
hosts:
- host: local
filter:
- label=app=web
- status=running
- health=healthy
Дополнительные примеры — в config.example.yaml.
Иконки Nerd Font
dtop поддерживает Nerd Fonts для расширенного отображения иконок. Nerd Fonts — это шрифты, дополненные глифами и иконками, широко используемыми в терминальных приложениях.
Установка Nerd Fonts
-
Перейдите на nerdfonts.com/font-downloads
-
Скачайте пропатченный шрифт (например, «FiraCode Nerd Font» или «JetBrainsMono Nerd Font»)
-
Установите шрифт в системе
-
Настройте эмулятор терминала на использование Nerd Font
Использование иконок Nerd Font
Установив Nerd Font и настроив терминал, включите иконки Nerd Font в dtop:
# Через командную строку
dtop --icons nerd
# Или в файле конфигурации
icons: nerd
|
Примечание
|
Если иконки отображаются в виде квадратов или знаков вопроса, убедитесь, что в терминале выбран Nerd Font. Режим по умолчанию |
Поддерживаемые типы подключений
Локальный Docker
Мониторинг контейнеров на локальном демоне Docker с помощью --host local. dtop учитывает переменную окружения DOCKER_HOST. Если она не задана, используется путь к сокету по умолчанию (/var/run/docker.sock на Linux/macOS).
dtop --host local
# или просто
dtop
Удалённый Docker по HTTP
Подключение к удалённым демонам Docker по незашифрованному TCP. Удобно для сред разработки, но использовать следует только в доверенных сетях.
dtop --host tcp://host2:2375
|
Внимание
|
TCP-соединения не шифруются. Используйте их только в доверенных сетях или при наличии соответствующих правил файрвола. |
Удалённый Docker по TLS
Подключение к удалённым демонам Docker по зашифрованному TLS-соединению. Требует настройки сертификатов через переменную окружения DOCKER_CERT_PATH.
export DOCKER_CERT_PATH=/path/to/certs # Директория с key.pem, cert.pem и ca.pem
dtop --host tls://host2:2376
SSH
Подключение к удалённому хосту по SSH для мониторинга запущенных на нём контейнеров. Это рекомендуемый способ защищённого удалённого подключения.
dtop --host ssh://user@host
# С нестандартным портом
dtop --host ssh://user@host:2222
Несколько хостов
Можно одновременно мониторить несколько Docker-хостов, указав несколько флагов --host:
dtop --host local --host tcp://host2:2375 --host ssh://user@host
|
Примечание
|
На данный момент URL Dozzle можно задать только в файле конфигурации — передать его напрямую через флаги командной строки невозможно. |
Метки Coolify и Dozzle
dtop считывает отображаемые имена и группы напрямую из Docker-меток без какой-либо дополнительной настройки:
-
Имя контейнера:
dev.dozzle.name→coolify.serviceName→ имя Docker-контейнера -
Столбец Compose:
dev.dozzle.group→coolify.projectName→com.docker.compose.project
Метки, состоящие только из пробелов или пустые, пропускаются. Это работает даже без настроенного URL Dozzle, в том числе после перезапуска контейнеров и переподключения хостов.
Похожие проекты и источники вдохновения
Я большой поклонник ctop. Именно ctop вдохновил меня создать Dozzle — браузерную альтернативу. Однако похоже, что ctop больше не поддерживается. Я рассматривал форк, но деплой под тем же именем был бы затруднён. dtop я создал для личных нужд: мне часто требуется видеть все свои контейнеры на нескольких хостах с первого взгляда. dtop решает эту задачу, поддерживая удалённые хосты через ssh и tcp. А поскольку я использую Dozzle, я встроил его в dtop, чтобы получить единый удобный инструмент для мониторинга логов контейнеров.
Участие в разработке
Мы приветствуем любой вклад! Не стесняйтесь присылать Pull Request.
Лицензия
Лицензия MIT — подробности в файле LICENSE.