Ich gehe davon aus, dass Sie den Gnome-Wayland-Desktop verwenden, da Sie Fedora 25 mit Wayland verwenden.
Gnome-Wayland führt Xwayland aus, um X-Anwendungen zu unterstützen. Sie können den Xwayland- Zugang wie zuvor mit Xorg teilen .
Ihr Beispielbefehl fehlt XAUTHORITY
und Sie erwähnen nicht xhost
. Sie benötigen eine dieser Möglichkeiten, um X-Anwendungen in Docker den Zugriff auf Xwayland (oder ein beliebiges X) zu ermöglichen. Da dies alles nicht mit Wayland zu tun hat, verweise ich auf Wie können Sie GUI-Anwendungen im Docker-Container ausführen? zum Ausführen von X-Anwendungen im Docker.
Kurz gesagt, zwei Lösungen mit xhost:
- Ermöglichen Sie Ihrem lokalen Benutzer den Zugriff über xhost:
xhost +SI:localuser:$(id -un)
und erstellen Sie einen ähnlichen Benutzer mit der Docker-Ausführungsoption:--user=$(id -u):$(id -g)
- Entmutigt: Erlaube root Zugriff auf X mit
xhost +SI:localuser:root
Verwandte Fallstricke : X verwendet normalerweise den gemeinsamen Speicher (X-Erweiterung MIT-SHM
). Docker-Container sind isoliert und können nicht auf den gemeinsam genutzten Speicher zugreifen. Dies kann zu Störungen beim Rendern und RAM-Zugriffsfehlern führen. Mit der Docker-Ausführungsoption können Sie dies vermeiden --ipc=host
. Dies wirkt sich auf die Containerisolierung aus, da der IPC-Namespace deaktiviert wird. Vergleiche: https://github.com/jessfraz/dockerfiles/issues/359
Um Wayland- Anwendungen in Docker ohne X auszuführen, benötigen Sie einen Wayland-Compositor wie Gnome-Wayland oder Weston. Sie müssen den Wayland-Sockel teilen. Sie finden es in XDG_RUNTIME_DIR
und sein Name wird in gespeichert WAYLAND_DISPLAY
. Da XDG_RUNTIME_DIR
der Zugriff nur seinem Besitzer gestattet ist, benötigen Sie denselben Benutzer im Container wie auf dem Host. Beispiel:
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-Anwendungen -e QT_QPA_PLATFORM=wayland
müssen ebenfalls gestartet werdenimagename dbus-launch waylandapplication
x11docker für X- und Wayland-Anwendungen in Docker ist eine Komplettlösung . Es ist auch wichtig, die Containerisolation beizubehalten (dies geht verloren, wenn Sie einfach die Host-X-Anzeige wie in Ihrem Beispiel freigeben).
/run/user/1000/wayland-0
meinem persönlichen Desktop.