Главная >> Инструкции >> Графические приложения в Docker

Графические приложения в Docker

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

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

Графические приложения в Docker

Первым делом надо сделать небольшое изменение для хоста, иначе, хост не разрешит приложению контейнера подключаться к X серверу. Создаем файл /tmp/docker.xauth:

touch /tmp/docker.xauth

А затем помещаем в него данные для аутентификации:

xauth nlist $DISPLAY | sed -e 's/^..../ffff/' | xauth -f touch /tmp/docker.xauth nmerge -

Эти строки можно добавить в ~/.xinitrc, чтобы файл аутентификации создавался автоматически при запуске X сервера:

vi ~/.bashrc

XAUTH=/tmp/docker.xauth
touch $XAUTH
xauth nlist $DISPLAY | sed -e 's/^..../ffff/' | xauth -f $XAUTH nmerge -

Теперь всё готово к запуску контейнера docker с gui. В контейнер мы примонтируем этот файл, UNIX сокет X сервера и передадим переменные, которые помогут приложениям в контейнере это всё найти. Для примера запустим gimp:

docker run --rm -ti -v /tmp/.X11-unix:/tmp/.X11-unix -v /tmp/docker.xauth:/tmp/docker.xauth -e DISPLAY=unix$DISPLAY -e XAUTHORITY=/tmp/docker.xauth jamesnetherton/gimp

Если вы хотите запустить более сложную программу, например браузер Google Chrome, то вам понадобиться подключить ещё и поддержку аппаратного ускорения видео, а также звук:

docker run --rm -ti -v /tmp/.X11-unix:/tmp/.X11-unix -v /tmp/docker.xauth:/tmp/docker.xauth -e DISPLAY=unix$DISPLAY -e XAUTHORITY=/tmp/docker.xauth --device /dev/dri:/dev/dri --device /dev/sni:/dev/sni dmitryrck/google-chrome

Выводы

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

Pеклама
Посмотреть детали

Anubis – это максимально легкое open-source решение, созданное специально для защиты небольших веб-ресурсов от бесконечного потока запросов от ботов и AI парсеров. Этот инструмент можно считать "ядерным вариантом", потому что он заставляет ботов выполнять вычисления похожие на майнинг криптовалюты. Но это неплохая альтернатива для тех, кто не может или не хочет использовать Cloudflare. Посмотреть детали

Creative Commons License
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

4 комментария к “Графические приложения в Docker”

  1. а как запустить виндузное гуи приложение в докере. солидворкс останавливает переход на линукс. без солида жить немогу.

    Ответить

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