Seperti yang Anda katakan Anda menjalankan Fedora 25 dengan Wayland, saya menganggap Anda menggunakan desktop Gnome-Wayland.
Gnome-Wayland menjalankan Xwayland untuk mendukung aplikasi X. Anda dapat membagikan akses Xwayland seperti yang Anda lakukan sebelumnya dengan Xorg.
Perintah contoh Anda meleset XAUTHORITY
, dan Anda tidak menyebutkan xhost
. Anda memerlukan salah satu cara ini untuk memungkinkan aplikasi X di buruh pelabuhan untuk mengakses Xwayland (atau X apa pun). Karena semua ini tidak terkait dengan Wayland, saya merujuk ke Bagaimana Anda bisa menjalankan aplikasi GUI dalam wadah buruh pelabuhan? tentang cara menjalankan aplikasi X di buruh pelabuhan.
Singkatnya, dua solusi dengan xhost:
- Izinkan akses pengguna lokal Anda melalui xhost:
xhost +SI:localuser:$(id -un)
dan buat pengguna serupa dengan opsi run docker:--user=$(id -u):$(id -g)
- Berkecil: Izinkan akses root ke X dengan
xhost +SI:localuser:root
Terkait Kesalahan : X biasanya menggunakan memori bersama (ekstensi X MIT-SHM
). Kontainer Docker terisolasi dan tidak dapat mengakses memori bersama. Itu dapat menyebabkan rendering gangguan dan kegagalan akses RAM. Anda dapat menghindari itu dengan opsi run docker --ipc=host
. Itu berdampak isolasi wadah karena menonaktifkan penamaan IPC. Bandingkan: https://github.com/jessfraz/dockerfiles/issues/359
Untuk menjalankan aplikasi Wayland di buruh pelabuhan tanpa X, Anda memerlukan komposer wayland yang berjalan seperti Gnome-Wayland atau Weston. Anda harus berbagi soket Wayland. Anda menemukannya XDG_RUNTIME_DIR
dan namanya disimpan di WAYLAND_DISPLAY
. Karena XDG_RUNTIME_DIR
hanya memungkinkan akses untuk pemiliknya, Anda memerlukan pengguna yang sama dalam wadah seperti pada host. Contoh:
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
Aplikasi QT5 juga perlu -e QT_QPA_PLATFORM=wayland
dan harus dimulaiimagename dbus-launch waylandapplication
x11docker untuk aplikasi X dan Wayland di docker adalah solusi menyeluruh . Ini juga peduli tentang menjaga isolasi wadah (yang hilang jika hanya berbagi tampilan host X seperti pada contoh Anda).
/run/user/1000/wayland-0
untuk desktop pribadi saya.