Gui для docker windows

linux-notes.org

Запуск GUI-приложения в Docker

Хочу поведать историю о том, как я запустил GUI-приложение в Docker. некоторые спросят, зачем? Ну есть много причин, вот некоторые из них:

  • Нет нужного пакета/утилиты под твою ОС.
  • Проверить что получится.

Запуск GUI-приложения в Docker

Начну с теории и закончу примерами.

Архитектура X window system 101

В *NIX системах, приложение GUI имеет роль «X-клиента». Каждый раз, когда он перерисовывает свое содержимое, последовательность графических команд кодируется все в X протокол используя библиотеку (обычно Xlib) и передается в сокет X11. На другом конце, X-сервер считывает такие команды из сокета и отображает их на дисплей:

Контейнерезированные (Containerizing) GUI приложения

Взглянув на архитектуру X window системы, ясно то, что для того, чтобы наши контейнеризованные графические приложения могли рисовать на экране, нам нужно предоставить ему доступ к сокету X11 (запись), и нам нужен X-сервер для использования и рендеринга графики команд на экран.

Мы можем подойти к этой проблеме с двух сторон:

  • Мы можем связать xvfb и VNC-сервер с нашим образом контейнера.
  • Мы можем совместно использовать сокет X11 хоста с контейнером в качестве внешнего раздела.

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

Совместное использование сокета X11 хоста с контейнером — это гораздо более модульное решение, которое позволяет использовать более компактный файл Docker, и он позволяет владельцу X-сервера переключать реализацию в соответствии с ее потребностями (возможно, X-сервер нашего хоста может быть даже самой xvfb).

Для начала, установим вспомогательное ПО:

И так, сейчас я приведу несколько примеров использования docker чтобы запустить графическое ПО внутри докер-контейнера. Самый простой способ сделать это, это выполнить:

Это самые простые способы для запуска.

Поддержка 3D hardware acceleration:

Поддержка звука (Audio):

Поддержка Webcam:

Используем date/time как и на хосте:

PS: Некоторые дистрибутивы не используют /etc/localtime, чтобы установить часовой пояс, в этих случаях вам нужно будет проверить, как он это делает и «реплицировать» в контейнер.

Проброс конфигов в контейнер:

Подключаем Video-game controller:

Это были примеры запусков. Сейчас приведу наглядные примеры….

-=== Запуск mysql-workbench в Docker ===-

После чего, я создам машину для тестов, буду использовать docker-machine:

Машина создана, подключаемся к ней:

Внутри созданной докер-машины, создаем:

Где нужно изменить «ENV DISPLAY :0» строку на свой «DISPLAY», чтобы узнать его, выполните:

Получите вывод (Если у вас MacOS X):

Получите вывод (Если у вас Linux. Проверял на CentOS 6):

Ну что, создаем контейнер:

Запускаем контейнер и прокидываем в него сокет. Контейнер автоматически стартует MySQL-Workbench при запуске:

PS: Можно прописать переменную:

Потом запуск будет проходить вот так:

Честно сказать, у меня не получилось запустить данный контейнер на моем macbook, получил ошибку:

Дубль 2, пробую выполнить все тоже, но на CentOS 6:

ИЛИ, для всех юзеров:

Но это не верное решение, берем свой eth0 ИП:

Так же, пробросим переменную для дисплея:

После этого, запускаю:

Вылезли другие ошибки… Посидел пару часов, я исправил ошибки на маке (описание решения, в самом низу статьи), ну а сейчас — я запускаю контейнер:

Или (Но 1-й вариант лучше как по мне):

Шикарно! Все заработало!

Читайте также:  Kes 10 для windows 10 ключом

-=== Запуск FireFox в Docker ===-

Существует несколько различных вариантов запуска GUI-приложений внутри Docker контейнера:

  • С использованием SSH с пересылкой X11
  • С использованием SSH с пересылкой VNC
  • Разделение сокетов между хостом и докер-контейнером

Самый простой способ — заключается в том, чтобы разделить мой сокет X11 с контейнером и использовать его напрямую. Идея довольно проста, и вы можете легко попробовать попробовать запустить контейнер Firefox, используя следующий файл Docker:

И вот что получилось:

Данный пример приводился на CentOS 6, но у меня есть еще MacOS X и я бы хотел все же подружить все это дело!

Ставим пакет для MacOS X:

Открываем натройки, переходим во вкладку «security» и выставляем все галочки (2 шт):

Хочу добавить следующее, я много перерыл в интернете, но мало что полезного нашел. И да, вот как у меня выглядят конфигы ssh.

Приведу еще пример.

-=== Запуск spotify в Docker ===-

PS: У меня тут используется несколько интерфейсов, но я взял ИП с eth1.

Или, для MacOS X:

Не буду собирать контейнер с Dockerfile, возьму готовый имедж:

Я тут пробросил звуковое устройство во внутрь самого контейнера.

Вот это шайтаны додумались)))

На маке я пока не понял как это сделать 🙁

-=== Запуск wireshark в Docker ===-

PS: У меня тут используется несколько интерфейсов, но я взял ИП с eth1.

Или, для MacOS X:

Или посмотреть все ИП на всех интерфейсах:

Не буду собирать контейнер с Dockerfile, возьму готовый имедж:

Вот и все, статья «Запуск GUI-приложения в Docker» завершена.

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

🐳 Лучшие инструменты с графическим интерфейсом для Docker

Portainer (веб-приложение)

Открытый исходный код (лицензия Zlib).

ОС: Linux, Mac OS X, Windows.

Portainer полностью поддерживает следующие версии Docker:

  • Начиная сDocker 1.10 до последней версии
  • Автономный Docker Swarm> = 1.2.3 (ПРИМЕЧАНИЕ. Использование Автономного Docker Swarm не рекомендуется с момента появления встроенного режима Swarm в Docker. В то время как более старые версии Portainer имели поддержку автономного Docker Swarm, Portainer 1.17.0 и более новые do не поддерживает его. Однако встроенный Swarm Mode в Docker полностью поддерживается.)

Полнофункциональная платформа позволяет работать с разными конечными точками.

Вы можете управлять реестрами, сетями, томами, секретами, кофигами, образами и контейнерами.

Portainer может проверить, здоров ли контейнер.

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

Кроме того, вы также получаете систему доступа на основе ролей и возможность устанавливать расширения.

Вывод: мощный инструмент с графическим интерфейсом, который можно использовать для командного проекта с локальными или удаленными контейнерами, стек Docker или Docker Swarm. Тем не менее, Portainer может оказаться слишком много для ваших общих потребностей.

DockStation (Настольное приложение)

ОС: Linux / Mac / Windows

DockStation – это бесплатное полнофункциональное настольное приложение, которое позволяет вам работать с docker и docker-compose.

Оно может помочь сгенерировать корректный и собственный файл docker-compose.yml, который можно использовать даже вне приложения, используя собственные команды консоли Docker Compose.

Оно также помогает вам управлять вашими контейнерами и сервисами (как удаленными, так и локальными) и отслеживать их (мониторинг логов, поиск логов, группирование, запуск инструментов и получение информации о контейнере).

Для общего, множественного и единичного мониторинга ресурсов контейнера доступны дополнительные инструменты.

С DockStation вы можете легко отслеживать ЦП, память, сетевой ввод-вывод , блокировать использование ввода-вывода и открывать порты.

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

Читайте также:  Топ архиваторов для linux

В качестве дополнительной опции DockStation работает как DockStation с Docker Hub.

DockStation – это бесплатное полнофункциональное настольное приложение, которое позволяет вам работать с docker и docker-compose.

Он может помочь сгенерировать чистый и собственный файл docker-compose.yml, который можно использовать даже вне приложения, используя собственные команды консоли Docker Compose.

Он также помогает вам управлять вашими контейнерами и сервисами (как удаленными, так и локальными) и отслеживать их (мониторинг журналов, поиск журналов, группирование, запуск инструментов и получение информации о контейнере).

Для общего, множественного и единичного мониторинга ресурсов контейнера доступны дополнительные инструменты.

С DockStation вы можете легко отслеживать ЦП, память, сетевой ввод-вывод, блокировать использование ввода-вывода и открывать порты.

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

В качестве дополнительной выгоды DockStation работает как DockStation с Docker Hub.

Docker Desktop (Настольное приложение)

Поскольку Docker-toolbox (с Kitematic) устарел, всем пользователям рекомендуется использовать Docker Desktop для Mac и Docker Desktop для Windows.

Этот инструмент дает вам возможность установить ограничения ресурсов для вашего Docker (память, процессор, размер подкачки и образа диска, общий доступ к файлам, прокси-серверы и сеть), настроить ядро Docker, командную строку и Kubernetes (вы можете настроить развертывание в Kubernetes из Docker Desktop).

Используя панель мониторинга, вы можете использовать не только основные операции с контейнерами, но также просматривать логи, базовую статистику и проверять свой контейнер.

Все это можно вызвать через контекстное меню или из индикатора в строке состояния.

Lazydocker (Терминальный интерфейс)

Открытый исходный код

ОС: (Linux / OSX / Windows)

  • Go версия> = 1.8
  • Docker > = 1.13 (API> = 1.25)
  • Docker-Compose> = 1.23.2 (необязательно)

Lazydocker можно использовать как с помощью мыши, так и с клавиатуры.

Для некоторых элементов доступно контекстное меню, где вы можете найти все популярные команды с ярлыками.

Хорошей новостью является то, что у вас есть не только основные команды для управления контейнерами, базовая статистика, журналы и проверки;

Вы также можете использовать графическую визуализацию основных метрик (по умолчанию загрузка ЦП и памяти) и «top» процессов.

Кроме того, вы также можете настроить этот раздел для почти всех метрик, которые вы хотите.

Для выбранных изображений вы можете увидеть команды из файла Docker, которые выполняются при их запуске, и унаследованные слои.

Также предусмотрена очистка неиспользуемых контейнеров, образов, томов (нарезка), кроме возможности изменения доступных команд и добавления новых.

В результате у нас есть минималистичный интерфейс терминала, который может быть очень полезен для нескольких «не очень сложных» проектов.

Docui (Терминальный интерфейс)

  • Образами (поиск / извлечение / удаление, сохранение / импорт / загрузка, проверка / фильтрация)
  • Контейнерами (создание / удаление, запуск / остановка, экспорт / принятие, проверка / переименование / фильтрация, exec cmd)
  • Томами (создание / удаление, проверка / фильтрация)
  • Сетями (удалить, проверить / отфильтровать)

Заключение

Это не полный список, но в нем затронуты некоторые из самых популярных и удобных бесплатных графических интерфейсов для Docker.

Какой из них выбрать – зависит от ваших потребностей.

Если вам нужен действительно мощный инструмент для команды с управлением доступом, работающей с Docker Swarm, со стеком Docker и может быть развернут на удаленном сервере – выберите Portainer.

Если вам нужен мощный инструмент, который работает в нескольких проектах (возможно, удаленных) с docker-compose и предпочитаете локальное настольное приложение – выберите DockStation.

Если ваш проект не так сложен – вы можете выбрать между Lazydocker (если вы хотите в основном управлять существующими контейнерами и службами с помощью консоли), Docui (если вы в основном создаете простые образы) или Docker Desktop (если вы цените интеграцию с рабочим столом и хотите получить простую интеграцию с Kubernetes).

см. также наш обзор про инструмент для Kubernetes:

Краткий сравнительный обзор GUI решений для работы с Docker

Хотелось сделать пометку, что все эти инструменты затрагивают проблемы по взаимодействию с Docker. Если Вы DevOps и у вас стоит задача развертывания, деплоя, масштабирования и т.п., то вышеописанные решения маловероятно что чем-то смогут вам помочь. Но наверняка вам сможет помочь Rancher.

DockStation — мощный функциональный комбайн для работы с Docker. Главным преимуществом является ориентация на проектную разработку под Docker и работа с Docker Compose.

Читайте также:  Bpwin установить windows 10

Преимущества: Работа с Docker Compose. Нативная поддержка Compose конфигураций, в следствие чего получается полноценная поддержка всех возможностей Docker функционала. Очень богатый функционал в виде возможностей работы над Docker проектами в целом, работа с удаленными нодами, мониторинг ресурсов и многое, многое другое. Очень быстрая и дружелюбная поддержка.

Недостатки: Закрытый исходный код.

Portainer — мощное решение для работы и конфигурирования Docker контейнеров. Представляет из себя Web приложение которое позволяет проводить настройку и манипуляции с контейнерами. В отличие от Kitematic и Shipyard имеет очень богатый функционал, который позволяет проводить очень качественную и полноценную настройку.

Преимущества: OpenSource. Богатый функционал, который позволяет как полноценно настроить проект, так и управлять контейнерами этого проекта. Позволяет подключаться к удаленным нодам и просматривать статистику контейнеров.

Недостатки: Непродуманный и перегруженный UI. Работа в веб версии для многих может быть неудобной. Неудобен если работа происходит более чем с 1-м проектом.

Kitematic — официальное приложение от Docker. Kitematic это OpenSource решение которое было выкуплено компанией Docker в 2015-м году. Основное назначение и применение — управление и конфигурирование отдельных контейнеров.

Преимущества: OpenSource. Официальное приложение.

Недостатки: Приложение очень ограниченное в возможностях. Очень слабое покрытие функционала Docker-а. Неудобен если работа происходит более чем с 1-м проектом.

Shipyard — решение для работы с контейнерами Docker. Представляет из себя Web приложение которое позволяет проводить настройку и базовые манипуляции с Docker контейнерами.

Преимущества: OpenSource. Простой в использовании.

Недостатки: Так же как и Kitematic имеет ограниченный функционал. Работа в веб версии для многих может быть неудобной. Неудобен если работа происходит более чем с 1-м проектом.

Таблица функций, которые вы наверняка будете использовать:

DockStation Kitematic Portainer Shipyard
Работа с Docker Compose +
Работа с Docker Machine + + + +
Конфигурирование отдельных контейнеров + + +
Базовые манипуляции с контейнерами (старт, стоп, рестарт, . ) + + + +
Вывод логов контейнеров + + + +
Поиск по логам +
Группировка и поиск контейнеров +
Мониторинг потребления ресурсов + + +
Работа с удаленными нодами + +
Шаблоны приложений +
Работа с кастомными хабами +

Выводы:

Каждый инструмент имеет свои плюсы и минусы. Подходить к выбору инструмента необходимо из поставленной задачи. Если у вас всего один проект в работе и на локальной машине, вам не нужен функционал больше чем запустить, остановить, перезагрузить контейнер, посмотреть его логи или настроить что-то примитивное, то Kitematic будет являться хорошим решением. Если же стоят такие же условия, но нужно это делать на удаленной машине, то для этого вполне подойдет Shipyard.

Если же у вас более серьезные проекты, то остановиться можно на 2-х решениях DockStation и Portainer. По своим функциональным возможностям эти решения очень мощные. Если вы не любите заморачиваться с развертыванием приложений, если на ваших проектах используется Docker Compose или собираетесь переходить на Docker Compose, если вы работаете более чем с 1-м проектом на Docker, если есть необходимость мониторинга состояния и потребления ресурсов как отдельных контейнеров, так и проектов в целом, то однозначно для работы более подходящим решением будет являться DockStation. На случай если работа ведется над одним проектом и вам необходима веб панель и возможность конфигурирования отдельных контейнеров, то Portainer будет являться хорошим выбором.

На момент написания статьи произошло неприятное событие. Проект Shipyard официально мертв.

Оцените статью