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_DIRdan namanya disimpan di WAYLAND_DISPLAY. Karena XDG_RUNTIME_DIRhanya 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=waylanddan 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-0untuk desktop pribadi saya.