Redirecionar janela X para um contêiner Docker

Redirecionar janela X para um contêiner Docker

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

informação relacionada