Графические приложения в 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



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

Автору будет очень приятно получить обратную связь.

Комментариев 0