जैसा कि आप कहते हैं कि आप वायलैंड के साथ फेडोरा 25 चला रहे हैं, मुझे लगता है कि आप गनोम-वेलैंड डेस्कटॉप का उपयोग कर रहे हैं।
Gnome-Wayland X अनुप्रयोगों का समर्थन करने के लिए Xwayland चलाता है। आप Xwayland पहुंच को साझा कर सकते हैं जैसे आपने Xorg के साथ किया था।
आपका उदाहरण कमांड याद करता है XAUTHORITY
, और आप उल्लेख नहीं करते हैं xhost
। आपको एक्सकेलैंड (या किसी भी एक्स) तक पहुंचने के लिए डॉक में एक्स अनुप्रयोगों की अनुमति देने के लिए इनमें से एक तरीके की आवश्यकता है। चूंकि यह सब वेलैंड से संबंधित नहीं है, मैं संदर्भित करता हूं कि आप डॉक कंटेनर में GUI एप्लिकेशन कैसे चला सकते हैं? डॉक में एक्स एप्लिकेशन कैसे चलाएं।
संक्षेप में, दो समाधानों के साथ xhost:
- अपने स्थानीय उपयोगकर्ता को xhost के माध्यम से जाने की अनुमति दें:
xhost +SI:localuser:$(id -un)
और docker रन विकल्प के साथ एक समान उपयोगकर्ता बनाएं:--user=$(id -u):$(id -g)
- निराश: एक्स के साथ रूट एक्सेस की अनुमति दें
xhost +SI:localuser:root
संबंधित नुकसान : एक्स आम तौर पर साझा मेमोरी (एक्स एक्सटेंशन MIT-SHM
) का उपयोग करता है । डॉकर कंटेनर अलग-थलग हैं और साझा मेमोरी तक नहीं पहुंच सकते। यह ग्लिट्स और रैम एक्सेस फेलियर को प्रस्तुत कर सकता है। आप डॉक रन विकल्प के साथ इससे बच सकते हैं --ipc=host
। यह कंटेनर अलगाव को प्रभावित करता है क्योंकि यह IPC नामस्थान को निष्क्रिय करता है। तुलना करें: https://github.com/jessfraz/dockerfiles/issues/359
X के बिना docker में Wayland एप्लिकेशन को चलाने के लिए , आपको Gnome-Wayland या Weston की तरह एक रनिंग वीलैंड कंपोज़िटर की आवश्यकता होती है। आपको वायलैंड सॉकेट को साझा करना होगा। आप इसे ढूंढते हैं XDG_RUNTIME_DIR
और इसका नाम इसमें संग्रहीत किया जाता है WAYLAND_DISPLAY
। जैसा कि XDG_RUNTIME_DIR
केवल इसके मालिक के लिए उपयोग की अनुमति देता है, आपको होस्ट के रूप में कंटेनर में समान उपयोगकर्ता की आवश्यकता होती है। उदाहरण:
docker run -e XDG_RUNTIME_DIR=/tmp \
-e WAYLAND_DISPLAY=$WAYLAND_DISPLAY \
-v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
--user=$(id -u):$(id -g) \
imagename waylandapplication
Qt5 अनुप्रयोगों की भी जरूरत है -e QT_QPA_PLATFORM=wayland
और इसके साथ शुरू किया जाना चाहिएimagename dbus-launch waylandapplication
डॉक में एक्स और वेलैंड अनुप्रयोगों के लिए x11docker एक समाधान में एक सब है। यह कंटेनर अलगाव को संरक्षित करने के बारे में भी परवाह करता है (जो कि खो जाता है यदि आपके उदाहरण के रूप में होस्ट एक्स डिस्प्ले साझा करना)।
/run/user/1000/wayland-0
मेरे व्यक्तिगत डेस्कटॉप के लिए है।