Parece que você está fazendo as mesmas coisas que estou fazendo, EXCETO você está compartilhando a autoridade .Xa no momento da criação do contêiner. Isso significa que se você alguma vez ssh -X em sua máquina depois de criar o contêiner, o .Xauthority não será mais válido. Você não pode ssh -X de outro terminal na mesma máquina e voltar e usar o .Xauthority, ssh -X muda a autoridade .X toda vez para o terminal mais recente. Eu só tenho que trabalhar copiando o .Xauthority toda vez que eu ssh -X na minha máquina e tento compartilhar a tela com o meu container.
nota: estou compartilhando um dispositivo e um ID de máquina porque estava encaminhando uma saída de webcam
1.Crie o contêiner e informe ao xhost para permitir o encaminhamento do ID do contêiner:
sudo docker run -it -d \
--net=host \
--env="DISPLAY" \
--env="QT_X11_NO_MITSHM=1" \
--volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
--device="/dev/video0:/dev/video0" \
--volume="/path/to/your/sharedDockerFiles:/root/sharedDockerFiles" \
--volume="/etc/machine-id:/etc/machine-id" \
yourdockerrepo/image:tag \
bash
export containerId=$(docker ps -l -q)
sudo xhost +local:'sudo docker inspect --format='{{ .Config.Hostname }}' $containerId'
sudo docker start $containerId
2.Copie .Xauthority da home host para o diretório sharedDockerFiles:
sudo cp ~/.Xauthority /path/to/your/sharedDockerFiles
3. Inicie e anexe seu contêiner
4. Copie o .Xauthority na sua pasta compartilhada para o container home
sudo cp /root/sharedDockerFiles/.Xauthority ~/
5. (necessário uma vez): Edite o arquivo / etc / ssh / ssh_config do contêiner em Host * para incluir:
ForwardX11 yes
X11Forwarding yes
6. Reinicie seu contêiner e reconecte e execute o aplicativo da GUI
7. Se você ainda tiver problemas, verifique se a variável $ DISPLAY no contêiner é a mesma que a do host .
echo $DISPLAY #do this in the container
exit
echo $DISPLAY #do this in the host, should be the same as container's
#if they aren't equal, start container and:
export DISPLAY= #put the output of your host's $DISPLAY variable here