
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