воскресенье, 18 октября 2020 г.

Как запустить Linux GUI приложения из докер-контейнера



Признаюсь сразу,  мне было интересно попробовать это из "спортивного" интереса но я не вижу большого практического смысла в этом. В таком случае использование виртуальной машины считаю более целесообразным. В статье я расскажу про самый простой способ – запуск докер-контейнера из специально подготовленного докер-имиджа с Docker Hub. 

Если тексту с картинками вы предпочитаете видео, то вот мой обзор на YouTube.



Принцип работы с такими докер-контейнерами единый
  1. Запускаем подходящий докер-контейнер. В статье я опишу несколько из них.
  2. Подключаем приложение для удаленной работы с рабочим столом системы, работающей в контейнере. Это может быть VNC или  Remote Desktop. На Маке VNC клиент встроен в Finder, а Remote Desktop можно скачать из AppStore. На Windows ситуация обратная. В большинстве случаев приложение Remote Desktop входит в состав операционной системы, а VNC клиента можно скачать.
Рассмотрим работу с таким контейнером на примере одного из самых функциональных докер-имиджей - https://hub.docker.com/r/manishfoodtechs/xfcefulldesktop_ubuntu20.4

Данный имидж базируется на ubuntu 20.4 и имеет из коробки больше всего предустановленного софта – Firefox, LibreOffice и много других утилит. Автор докер-имиджа предлагает работать с контейнером через RDP. По тому команда для запуска контейнера будет иметь следующий вид. 

docker run -it -p 9096:3389 -e 3389 --shm-size 2g manishfoodtechs/xfcefulldesktop_ubuntu20.4

В этой команде «пробрасывается» порт для работы с контейнером через RDP – 3389. Поэтому, после старта контейнера нужно запустить сервер удаленного рабочего стола на основе протокола RDP

/etc/init.d/xrdp restart


Все. Теперь можно запускать Remote Desktop и подключаться к рабочему столу в контейнере. 
Я  приведу скриншоты с Remote Desktop на Маке. При подключении Remote Desktop пожалуется, что мне знает такого компьютера. Для продолжения нажмите кнопку Connect.
В качестве имени компьютера (PC Name) надо указать 127.0.0.1:9096, Username: root и Password: 123456

Не пугайтесь, иконки в системе стилизованы под Windows. Не знаю зачем, но даже иконка Firefox сделана как иконка Microsoft Edge, a иконки приложений LibreOffice стилизованы под Microsoft Office.

Можно в команду запуска докер-контейнера добавить ключ  -v $(pwd):/host  и тогда  можно  работать  с файлами из текущего директория их докер-контейнера. Полностью команда для запуска докер-контейнера будет выглядеть так

docker run -it -p 9096:3389 -e 3389 -v $(pwd):/host --shm-size 2g manishfoodtechs/xfcefulldesktop_ubuntu20.4

Если по каким-то причинам вы не хотите работать через RDP, то можно настроить контейнер для работы через VNC. В простейшем варианте, чтобы не делать свой докер-имидж это может выглядеть так.

Запускаем контейнер с открытием дефолтного порта для VNC – 5901 (вместо 3389)

docker run -it -p 5901:5901 -v $(pwd):/host --shm-size 2g manishfoodtechs/xfcefulldesktop_ubuntu20.4

Далее, после старта контейнера в контейнере через терминал устанавливаем VNC server

sudo apt install tightvncserver
 
и запускаем VNC server

sudo vncserver

VNC server при запуске попросит создать и подтвердить пароль для удаленного доступа к рабочему столу. На вопрос  "Would you like to enter a view-only password (y/n)?". Отвечаем “n”.

Все приготовления сделаны. Теперь можно подключать VNC клиента. На Маке VNC клиент встроен в Finder (Go->Connect to Server). В качестве стоки подключения нужно указать vnc://127.0.0.1:5901
В окне ввода пароля указываем тот пароль, который придумали на этапе запуска vncserver.
Если вам понравилась эта тема, то на Docker Hub есть и другие имиджи на Linux c GUI которые стоит попробовать. Могу посоветовать 
  1. https://hub.docker.com/r/dorowu/ubuntu-desktop-lxde-vnc - есть разные версии Ubuntu. 20, 18, 16, 14. Что весьма удобно, с десктопом можно как через VNC клиента, так и есть веб-интерфейс, т.е. можно работать из браузера.
  2. https://hub.docker.com/r/queeno/ubuntu-desktop/ - «голая» Ubunut 16.04. Работа через VNC
  3. https://hub.docker.com/r/cyverse/ubuntu18-xfce-desktop - «голая» Ubunut 18.04. Работать с контейнером можно  как при помощи веб-интерфейса, так и через VNC  клиента.

2 комментария:

manishfoodtechs комментирует...

Hey thanks. I am developer of this Ubuntu docker image. Your article is well written.

manishfoodtechs комментирует...


Do not be alarmed, the icons in the system are stylized for Windows. I don't know why, but even the Firefox icon is made like the Microsoft Edge icon, and the LibreOffice application icons are styled like Microsoft Office.


This is because I am using windows theme on xfce