Как запустить Linux GUI приложения из докер-контейнера
Признаюсь сразу, мне было интересно попробовать это из "спортивного" интереса но я не вижу большого практического смысла в этом. В таком случае использование виртуальной машины считаю более целесообразным. В статье я расскажу про самый простой способ – запуск докер-контейнера из специально подготовленного докер-имиджа с Docker Hub.
Если тексту с картинками вы предпочитаете видео, то вот мой обзор на YouTube.
Принцип работы с такими докер-контейнерами единый
- Запускаем подходящий докер-контейнер. В статье я опишу несколько из них.
- Подключаем приложение для удаленной работы с рабочим столом системы, работающей в контейнере. Это может быть 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 которые стоит попробовать. Могу посоветовать
- https://hub.docker.com/r/dorowu/ubuntu-desktop-lxde-vnc - есть разные версии Ubuntu. 20, 18, 16, 14. Что весьма удобно, с десктопом можно как через VNC клиента, так и есть веб-интерфейс, т.е. можно работать из браузера.
- https://hub.docker.com/r/queeno/ubuntu-desktop/ - «голая» Ubunut 16.04. Работа через VNC
- https://hub.docker.com/r/cyverse/ubuntu18-xfce-desktop - «голая» Ubunut 18.04. Работать с контейнером можно как при помощи веб-интерфейса, так и через VNC клиента.
Комментарии
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