Dediğin gibi Fedora 25'i Wayland ile çalıştırıyorsun, sanırım Gnome-Wayland masaüstünü kullanıyorsun.
Gnome-Wayland, X uygulamalarını desteklemek için Xwayland'ı çalıştırır. Xwayland erişimini daha önce yaptığınız gibi Xorg ile paylaşabilirsiniz .
Örnek komutunuz özlüyor XAUTHORITY
ve siz bahsetmiyorsunuz xhost
. Docker'daki X uygulamalarının Xwayland'a (veya herhangi bir X) erişmesine izin vermek için bu yollardan birine ihtiyacınız vardır. Tüm bunlar Wayland ile ilgili olmadığından, GUI uygulamalarını docker kapsayıcısında nasıl çalıştırabilirim? X uygulamalarının docker'da nasıl çalıştırılacağı hakkında.
Kısaca xhost ile iki çözüm:
- Yerel kullanıcılarınızın xhost: aracılığıyla erişmesine izin verin
xhost +SI:localuser:$(id -un)
ve docker çalıştırma seçeneği ile benzer bir kullanıcı oluşturun:--user=$(id -u):$(id -g)
- Vazgeçildi: ile X'e kök erişimine izin ver
xhost +SI:localuser:root
İlgili Pitfall : X normalde paylaşılan belleği kullanır (X uzantısı MIT-SHM
). Docker kapları yalıtılmıştır ve paylaşılan belleğe erişemez. Bu, aksaklıklara ve RAM erişim hatalarına neden olabilir. Docker çalıştırma seçeneği ile bundan kaçınabilirsiniz --ipc=host
. IPC ad boşluğunu devre dışı bıraktığı için kapsayıcı yalıtımını etkiler. Karşılaştır: https://github.com/jessfraz/dockerfiles/issues/359
Çalıştırmak için Wayland X olmadan docker uygulamaları, sen Gnome-Wayland veya Weston gibi çalışan bir wayland dizgici gerekir. Wayland soketini paylaşmalısınız. İçinde bulursunuz XDG_RUNTIME_DIR
ve adı depolanır WAYLAND_DISPLAY
. Gibi XDG_RUNTIME_DIR
sadece sahibi için erişim sağlar, ana bilgisayardaki olarak konteyner içinde aynı kullanıcıyı gerekir. Misal:
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 uygulamaları da gerekir -e QT_QPA_PLATFORM=wayland
ve başlatılmalıdır.imagename dbus-launch waylandapplication
Docker'daki X ve Wayland uygulamaları için x11docker hepsi bir arada çözümdür. Ayrıca, kapsayıcı yalıtımını korumayı da önemsiyor (örneğin, ana bilgisayar X ekranını paylaşmanız durumunda kayboluyor).
/run/user/1000/wayland-0
kişisel masaüstümde.