
Estou tentando redirecionar a janela X em um contêiner Docker e estou usando xeyes para testá-lo. Eu usei uma imagem docker do Ubuntu.
Meu Dockerfile:
FROM ubuntu
RUN apt-get update
RUN apt-get -y install x11-apps
Criando imagem:
docker build -t x11 .
antes de iniciar o contêiner, para permitir todas as conexões ao servidor X:
xhost +
Testando o redirecionamento do X e deu certo:
ssh -X localhost xeyes
Contêiner inicial:
docker run -it --net=host --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw" --rm x11 xeyes
e obtive esta saída:
Error: Can't open display: :0
Eu também tentei desta forma:
docker run -it --net=host --env="DISPLAY" --volume="/tmp/.X11-unix/X0:/tmp/.X11-unix/X0:rw" --rm x11 xeyes
e recebi o mesmo erro:
Error: Can't open display: :0
Eu também tentei a solução postada emSSH X-Forward para soquete X11 compartilhado com contêiner docker, mas obteve o mesmo resultado.
Estou usando o Centos 7 como host. Aparentemente, é algo relacionado ao servidor X no Centos. Experimentei em uma máquina virtual com Kubuntu 19.04 com instalação padrão, instalei o docker e funcionou perfeitamente.
ATUALIZADA:
Executando esses comandos como root:
ausearch -c 'xeyes' --raw | audit2allow -M my-xeyes
semodule -i my-xeyes.pp
funcionou para todos os usuários!
Alguma ideia do porquê?
Responder1
Ao usar Ubuntu:20.04
Descobri que -u 0 resolverá o problema do podman e -u $UID do 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
No arquivo docker, instale x11-apps