Проект Docker, запущенный в 2013 году, стал одним из самых популярных инструментов в области контейнеризации. Спустя почти 10 лет Docker активно развивается, однако, не только сама компания Docker Inc привносит улучшения в свой продукт – обычные пользователи тоже вносят свой вклад, создавая различные инструменты, которые совершенствуют взаимодействие с системой Docker.  В статье мы рассмотрим топ-5 полезных утилит, которые упростят работу с Docker.   Официальный сайт: portainer.io Документация: docs.portainer.io Лицензия: коммерческая и свободная (open source) С момента запуска в Docker официально никогда не было графического веб-интерфейса. Для решения этой проблемы появился инструмент под названием Portainer — проект с открытым исходным кодом, представляющий собой образ графического web-интерфейса для управления Docker. Помимо предоставления полной информации об установленном Docker, Portainer позволяет управлять всеми сущностями Docker, включая управление контейнерами, образами и сетями. Произвести установку можно в отдельно установленный хост (standalone) Docker, а также в кластеры Docker Swarm и Kubernetes. Рассмотрим пример установки в варианте standalone в операционной системе Ubuntu 22.04. Первым шагом необходимо создать том (volume), где Portainer будет хранить свои данные: Далее необходимо запустить Portainer:   Порт для входа в веб-интерфейс по умолчанию – 9443. При первом входе необходимо создать пользователя и задать ему пароль: Далее необходимо подключиться к локальному окружению, где установлен Docker, или подключиться к удаленному хосту с установленным там Docker:   После подключения к необходимому хосту откроется основное меню программы, где будет отображена информация о технических характеристиках сервера, а также — разделы с количеством сервисов, контейнеров, образов, томов и сетей:   В каждый из этих разделов можно перейти и выполнить определенные действия. В разделе Контейнеры можно запустить/остановить/завершить/перезапустить/поставить на паузу/удалить контейнер:   Также в этом разделе можно создать контейнер: Принцип работы точно такой же, как и у команды docker run – задается имя контейнера, образ, при необходимости в контейнере можно открыть порты, а также настроить контроль доступа, только вместо командной строки и параметров здесь используется графический интерфейс. В разделе Образы можно скачивать и удалять образы: В разделе Сети можно создавать и удалять сети:   В разделе Тома можно создавать и удалять тома:   Также в Portainer можно просматривать события: Официальный сайт: GitHub Документация: GitHub Лицензия: свободная (open source) Hadolint представляет собой утилиту (линтер), предназначенную для оценки Dockerfile с точки зрения корректности синтаксиса и безопасности инструкций. Также Hadolint проводит проверку на соблюдение лучших практик по написанию инструкций в Dockerfile. В качестве примера возьмем Dockerfile со следующим содержанием: Hadolint можно запустить прямо в контейнере Docker для этого достаточно выполнить команду ниже, передав имя Dockerfile в качестве параметра:   После того, как анализ будет завершен, в терминале будут выведены все недочеты, которые были найдены в Dockerfile. Можно заметить, что утилита указала на то, что в нашем Dockerfile используется тег latest, в то время как необходимо указывать конкретную версию в базовом образе. Также утилита сообщила нам, что для использования портов необходимо использовать диапазон с 0 до 65535, а в нашем Dockerfile указан порт 80000. В качестве уровней предупреждения используются следующие: info — рекомендации не являются обязательными к исправлению, но помогут оптимизировать образ; warning — необходимо обратить внимание на недочеты, как правило, предоставляются советы из официальной документации по оптимизации Dockerfile; error — найдены критические ошибки, которые влияют на сборку образа и могут привести к проблем после запуска контейнера. Для идентификации ошибок Hadolint использует правила. Каждое правило имеет свой уникальный буквенно-цифровой код. Найти все правила и их описания, содержащие шаги по устранению ошибок, можно по ссылке. Если вы не хотите запускать Hadolint в контейнере, его можно установить на хост или использовать онлайн. Официальный сайт: GitHub Документация: GitHub Лицензия: свободная (open source) Dive — утилита, которая визуально отображает подробную информацию о Docker образах и их слоях.  Dive можно запустить в контейнере, где последним аргументом указывается название образа или контейнера, который необходимо проанализировать: На панели справа отображаются слои образа, а слева — подробная информация о каждом слое. Dive позволяет проанализировать размер образа и выявить те слои, которые занимают больше всех места на диске.  Также можно просматривать файлы, которые были изменены, добавлены или удалены. Данные изменения указаны в древовидной структуре файлов справа. Эта функция помогает наглядно отобразить изменения, которые вносились на каждом этапе сборки. Это может оказаться полезным, если нет доступа к файлу Dockerfile, из которого происходит сборка образа. Официальный сайт: GitHub Документация: GitHub Лицензия: свободная (open source) Ctop — утилита для мониторинга метрик в контейнерах, которая напоминает утилиту top в Unix системах. Для запуска утилиты достаточно выполнить команду: У ctop отсутствуют какие-либо ключи и параметры. После запуска утилита отобразит список всех контейнеров – как запущенных, так и завершенных. Утилита отображает следующую информацию о контейнерах Docker: Имя; ID (номер); Нагрузку на процессор; Нагрузку на оперативную память; NET RX/TX — количество переданных/полученных данных; IO R/W — количество операций ввода-вывода в секунду; PID – уникальный идентификатор процесса; uptime. Также можно посмотреть информацию о конкретном контейнере, для этого необходимо выбрать нужный контейнер и нажать на клавишу Enter. Метрики динамические и получают информацию в режиме реального времени. Официальный сайт: GitHub Документация: GitHub Лицензия: свободная (open source) Dozzle представляет собой веб-интерфейс для отображения логов контейнеров в режиме реального времени. Для запуска Dozzle достаточно одной команды: Для доступа в веб-интерфейс необходимо перейти в браузере по IP-адресу сервера и порту 8080: На главной странице отображаются запущенные контейнеры. Для того чтобы просмотреть список всех контейнеров (остановленных и завершенных), необходимо перейти в раздел «Все». Сверху над списком контейнеров расположена информация об их общем количестве, отдельно отображено количество запущенных контейнеров, а также информация об использовании процессора и оперативной памяти. Чтобы посмотреть лог файл какого-либо контейнера, необходимо выбрать его из списка. Далее откроется файл с логами: Лог файл динамический, т. е. информация обновляется в режиме реального времени. Также существует возможность скачать файл с логами, произвести его очистку и воспользоваться поиском: Функциональность Docker можно существенно расширить при помощи сторонних утилит. Все описанные в статье утилиты являются бесплатными. У них открытый исходный код, что позволяет вносить в них свои правки, тем самым оптимизируя их под свои нужды. Также каждую утилиту можно запустить в контейнере Docker, не устанавливая ее на хост, что упрощает работу с ней.   НЛО прилетело и оставило здесь промокод для читателей нашего блога: — 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.  Системный администратор