Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
docker [2017/06/04 11:41] wombat створено |
docker [2022/12/30 17:19] (поточний) wombat Запуск графічних програм у Docker |
||
---|---|---|---|
Рядок 45: | Рядок 45: | ||
sudo apt-get update | sudo apt-get update | ||
sudo apt-get install docker-ce | sudo apt-get install docker-ce | ||
+ | |||
+ | |||
+ | |||
+ | ===== Запуск графічних програм у Docker ===== | ||
+ | |||
+ | Якщо спробувати запустити графічну програму з образу Docker, можна побачити таке повідомлення: | ||
+ | |||
+ | cannot connect to X server :0.0 | ||
+ | |||
+ | Це означає, що в контейнері немає інформації про запущений X-сервер. Для того, щоб ця інформація передавалася образу під час його запуску, його необхідно запускати із додатковими параметрами: | ||
+ | |||
+ | docker run -ti --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix <назва_образу> | ||
+ | |||
+ | Але навіть у такому випадку при спробі запустити графічну програму нас чекає така помилка: | ||
+ | |||
+ | Invalid MIT-MAGIC-COOKIE-1 key : cannot connect to X server :0.0 | ||
+ | |||
+ | Тепер контейнер має інформацію про запущений X-сервер основної системи, але не має прав доступу до нього. Для того, щоб додати таке право до свого сеансу в Docker, необхідно зробити такі кроки: | ||
+ | |||
+ | - В основній системі (не в контейнері Docker) виконати команду:<code> | ||
+ | xauth list | ||
+ | MyHost/unix:0 MIT-MAGIC-COOKIE-1 40a9e33971febb9ebc18f692772cfdad | ||
+ | </code> | ||
+ | - Скопіювати випадкове число наприкінці виданого рядка: ''40a9e33971febb9ebc18f692772cfdad'' | ||
+ | - Запустити контейнер Docker, вказавши в явному вигляді якусь назву для комп'ютера гостьової системи:<code> | ||
+ | docker run -ti --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --name=GUIHost <назва_образу> | ||
+ | </code> | ||
+ | - У командному рядку запущеного контейнера виконати таку команду:<code> | ||
+ | xauth add GUIHost/unix:0 MIT-MAGIC-COOKIE-1 40a9e33971febb9ebc18f692772cfdad | ||
+ | </code> підставивши до неї обране ім'я комп'ютера (в даному випадку ''GUIHost'') та число, скопійоване на попередніх кроках. | ||
+ | | ||
+ | Після цього можна запускати графічні програми з командного рядка контейнера, і їхні вікна відображатимуться через X-сервер основної системи. | ||
+ | |||
+ | ==== Qt ==== | ||
+ | |||
+ | Графічні програми на Qt можуть видавати таку помилку: | ||
+ | <code>X Error: BadAccess (attempt to access private resource denied)</code> | ||
+ | Тоді можна спробувати запускати їх, встановивши змінну оточення: | ||
+ | <code>QT_GRAPHICSSYSTEM=native <програма> </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||