Como você diz que está executando o Fedora 25 com Wayland, presumo que você esteja usando a área de trabalho do Gnome-Wayland.
O Gnome-Wayland executa o Xwayland para suportar aplicativos X. Você pode compartilhar o acesso ao Xwayland como fez antes com o Xorg.
Seu comando de exemplo falha XAUTHORITY
e você não menciona xhost
. Você precisa de uma destas maneiras para permitir que aplicativos X na janela de encaixe acessem o Xwayland (ou qualquer outro X). Como tudo isso não está relacionado ao Wayland, refiro-me a Como você pode executar aplicativos GUI no contêiner de docker? sobre como executar aplicativos X na janela de encaixe.
Para resumir, duas soluções com xhost:
- Permita o acesso do usuário local via xhost:
xhost +SI:localuser:$(id -un)
e crie um usuário semelhante com a opção de execução do docker:--user=$(id -u):$(id -g)
- Desencorajado: permita acesso root ao X com
xhost +SI:localuser:root
Armadilha relacionada : O X normalmente usa memória compartilhada (extensão X MIT-SHM
). Os contêineres do Docker são isolados e não podem acessar a memória compartilhada. Isso pode levar a falhas de renderização e falhas no acesso à RAM. Você pode evitar isso com a opção de execução do docker --ipc=host
. Isso afeta o isolamento do contêiner, pois desativa o namespace do IPC. Compare: https://github.com/jessfraz/dockerfiles/issues/359
Para executar aplicativos Wayland na janela de encaixe sem o X, você precisa de um compositor de wayland em execução, como Gnome-Wayland ou Weston. Você precisa compartilhar o soquete Wayland. Você o encontra XDG_RUNTIME_DIR
e seu nome é armazenado WAYLAND_DISPLAY
. Como XDG_RUNTIME_DIR
apenas permite acesso ao proprietário, você precisa do mesmo usuário no contêiner e no host. Exemplo:
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
Os aplicativos QT5 também precisam -e QT_QPA_PLATFORM=wayland
e devem ser iniciados comimagename dbus-launch waylandapplication
O x11docker para aplicativos X e Wayland no docker é uma solução completa. Ele também se preocupa em preservar o isolamento do contêiner (que se perde se simplesmente compartilhar a exibição do host X, como no seu exemplo).
/run/user/1000/wayland-0
minha área de trabalho pessoal.