Redirigir la ventana X a un contenedor Docker

Redirigir la ventana X a un contenedor Docker

Estoy intentando redirigir la ventana X en un contenedor Docker y estoy usando xeyes para probarlo. Utilicé una imagen acoplable de Ubuntu.

Mi archivo Docker:

FROM ubuntu
RUN apt-get update
RUN apt-get -y install x11-apps

Creando imagen:

docker build -t x11 .

antes de iniciar el contenedor, para permitir todas las conexiones al servidor X:

xhost +

Probando la redirección de X, y estuvo bien:

ssh -X localhost xeyes

Contenedor inicial:

docker run -it --net=host --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw" --rm x11 xeyes

y obtuve este resultado:

Error: Can't open display: :0

También lo intenté de esta manera:

docker run -it --net=host --env="DISPLAY" --volume="/tmp/.X11-unix/X0:/tmp/.X11-unix/X0:rw" --rm x11 xeyes

y obtuve el mismo error:

Error: Can't open display: :0

También probé la solución publicada enSSH X-Forward al socket X11 compartido con el contenedor acoplable, pero obtuvo el mismo resultado.

Estoy usando Centos 7 como anfitrión. Aparentemente, es algo relacionado con el servidor X en Centos. Lo probé en una máquina virtual con Kubuntu 19.04 con instalación predeterminada, instalé Docker y funcionó perfectamente.

ACTUALIZADO:

Ejecutando esos comandos como root:

ausearch -c 'xeyes' --raw | audit2allow -M my-xeyes
semodule -i my-xeyes.pp

¡Funcionó para todos los usuarios!

¿Alguna idea de por qué?

Respuesta1

Al usar ubuntu:20.04

Descubrí que -u 0 resolverá el problema de podman y -u $UID de Docker.

$podman run -it -u 0 -e DISPLAY="$DISPLAY" -v /tmp/.X11-unix:/tmp/.X11-unix:rw podman-image xclock

$docker run -it -u $UID -e DISPLAY="$DISPLAY" -v /tmp/.X11-unix:/tmp/.X11-unix:rw docker-image xclock

En el archivo acoplable instale x11-apps

información relacionada