Огляд інтерфейсів GUI для управління Docker-контейнерами
Робота з Docker в консолі – звична для багатьох рутина. Тим не менш, трапляються випадки, коли GUI-/веб-інтерфейс може виявитися корисним навіть для них. У статті представлено огляд найпомітніших на сьогоднішній день рішень, автори яких спробували запропонувати зручніші (або придатні для якихось випадків) інтерфейси для знайомства з Docker або навіть обслуговування великих його інсталяцій. Деякі з проектів зовсім молоді, інші — навпаки, вже відмирають…
Portainer (раніше відомий як UI for Docker) - найпопулярніший веб-інтерфейс для роботи з Docker-хостами та кластерами Docker Swarm. Запускається дуже просто - розгортанням Docker-образу, якому як параметр передається адреса/сокет Docker-хоста. Дозволяє керувати контейнерами, образами (уміє забирати їх із Docker Hub), мережами, томами, секретами. Підтримує Docker 1.10+ (та Docker Swarm 1.2.3+). Під час перегляду контейнерів для кожного доступна базова статистика (використання ресурсів, процеси), логи, підключення до консолі (веб-термінал xterm.js). Існують свої списки доступів, що дозволяють обмежувати користувачам Portainer права на різні операції в інтерфейсі.
Мови/платформа: Electron, Node.js, React та AltJS.
Стандартний GUI для користувачів Docker в Mac OS X і Windows, який увійшов до складу Docker Toolbox - інсталятора набору утиліт, що включають також Docker Engine, Compose і Machine. Має мінімальний набір функцій, що забезпечують завантаження образів з Docker Hub, керування базовими налаштуваннями контейнерів (включаючи томи, мережі), перегляд логів та підключення до консолі.
Shipyard це не просто інтерфейс, а система управління ресурсами Docker, в основу якої закладено наявність свого API. API в Shipyard - RESTful на базі формату JSON, сумісний на 100% з Docker Remote API, пропонує додаткові можливості (зокрема - автентифікацію та керування списками доступу, логування всіх операцій). Цей API і є базою, навколо якої вже побудований веб-інтерфейс. Для зберігання службової інформації, що не відноситься безпосередньо до контейнерів і образів, Shipyard використовується RethinkDB. Веб-інтерфейс дозволяє керувати контейнерами (включаючи перегляд статистики та логів, підключення до консолі), образами, вузлами кластера Docker Swarm, приватними реєстрами (Registries).
Платформа від VMware, призначена для автоматизованого деплою контейнеризованих додатків та керування ними протягом життєвого циклу. Позиціонується як легковажне рішення, покликане спростити життя DevOps-інженерам. Веб-інтерфейс дозволяє керувати хостами з Docker, контейнерами (+ перегляд статистики та логів), шаблонами (образи, інтегровані з Docker Hub), мережами, реєстрами, політиками (які хости, якими контейнерами будуть використовуватися і як розподіляти ресурси). Вміє перевіряти стан контейнерів (health checks). Поширюється та розгортається як Docker-образ. Працює із Docker 1.12+. (Див. також знайомство з програмою в блозі VMware з великою кількістю скріншотів.)
DockStation - молодий проект, створений білоруськими програмістами (які, до речі, шукають інвесторів для її подальшого розвитку). Дві головні особливості — орієнтованість на розробників (не на DevOps-інженерів чи сисадмінів) з повноцінною підтримкою Docker Compose та закритість коду (безкоштовно для використання, а за гроші автори пропонують персональну підтримку та доопрацювання можливостей). Дозволяє не лише керувати образами (підтримується Docker Hub) та контейнерами (+ статистика та логи), а й заводити проекти з візуалізацією зв'язків контейнерів, задіяних у проекті. Також є парсер (перебуває в бета-версії), що дозволяє конвертувати команди docker run у форматі Docker Compose. Працює з Docker 1.10.0+ (Linux) та 1.12.0 (Mac+Windows), Docker Compose 1.6.0+.
Мови/платформа: Electron, Scala.js (+ React on Scala.js).
Простий інтерфейс для роботи з Docker, який використовує Docker Remote API. Дозволяє керувати контейнерами та образами (за допомогою Docker Hub), підключатися до консолі, переглядати історію подій. Має механізми видалення контейнерів і образів, що не використовуються. Проект знаходиться в бета-версії та розвивається дуже повільно (реальна активність, судячи з комітів, затихла у лютому цього року).
Інші варіанти
В огляд не потрапили:
фермер — платформа управління контейнерами, що має функції оркестрування та підтримку Kubernetes. Open Source (Apache License 2.0); працює в Linux; написано на Java. Має веб-інтерфейс Інтерфейс Rancher на Node.js.
Kontena — «дружня до розробників платформа для запуску контейнерів у production», яка по суті конкурує з Kubernetes, але позиціонується як більш готове «з коробки» і просте у використанні рішення. Крім CLI та REST API проект пропонує веб-інтерфейс (скріншот) для управління кластером та його оркеструванням (включаючи роботу з вузлами кластера, сервісами, томами, секретами), перегляду статистики/логів. Open Source (Apache License 2.0); працює у Linux, Mac OS X, Windows; написано на Ruby.
Data Pulley - Проста утиліта, що має мінімум функцій та документації. Open Source (MIT License); працює в Linux (є лише пакет для Ubuntu); написано на Python. Підтримує Docker Hub для зображень, перегляд логів для контейнерів.
Panamax — проект, який ставив за мету «зробити деплою складних контейнеризованих додатків таким простим, як drag-n-drop». Для цього було створено свій каталог шаблонів для деплою додатків (Panamax Public Templates), результати з якого показуються при пошуку образів/додатків нарівні з даними Docker Hub. Open Source (Apache License 2.0); працює у Linux, Mac OS X, Windows; написано на Ruby. Інтегрований з ОС CoreOS та системою для оркестрування Fleet. Судячи з видимої в інтернеті активності, перестав підтримуватись у 2015 році.
Dockly - консольний графічний інтерфейс для управління контейнерами та образами Docker. Open Source (MIT License); написано на JavaScript/Node.js.
Наостанок: як виглядає GUI в Dockly? Обережно, GIF на 3,4 Мб!