É bem sabido que você pode executar aplicativos X11 em um contêiner docker passando /tmp/.X11-unix
como um volume, configurando DISPLAY
apropriadamente, por exemplo, encaminhando-o usando -e DISPLAY=$DISPLAY
e possivelmente também passando ~/.Xauthority
como volume. Este método requer que o daemon docker seja executado em sua máquina local, porque somente nesse caso encaminhar o soquete unix para acessar o X11 no contêiner pode funcionar.
Se você estiver usando o Podman Desktop no Windows, não há variável DISPLAY no Windows. Se você entrar em um contêiner WSL unix, poderá acessar o X11 (usando WSLg) desse contêiner e poderá acessar o daemon podman como servidor remoto seguindo as instruções fornecidas em https://podman-desktop.io/docs/podman/accessing-podman-from-another-wsl-instance . Você não pode encaminhar /tmp/.X11-unix
, porque o daemon docker é executado em uma máquina diferente (a máquina do sistema podman) da distribuição WSL.
Existe uma maneira simples de executar aplicativos X11 em contêineres Unix usando podman no Windows?
Você pode executar aplicativos X11 em contêineres podman usando o Podman Desktop no Windows. A máquina do sistema podman, que executa contêineres Linux, é apenas outra máquina WSL que tem acesso ao WSLg. Então você só precisa encaminhar o soquete X11 da máquina do sistema podman para o contêiner. Embora o encaminhamento
/tmp/.X11-unix
não funcione, no WSL, esse diretório deve ser encaminhado/mnt/wslg/.X11-unix
de qualquer maneira. Além disso, como o WSLg fornece apenas um servidor X de qualquer maneira, aDISPLAY
variável é sempre:0
, então a seguinte invocação depodman
executa com sucesso os aplicativos X:A mensagem de erro apareceu quando fechei o XBill depois de descobrir que não conseguia jogar bem o jogo usando um trackpad em um laptop. É um comportamento padrão dos aplicativos X11. Se a janela principal for fechada ao ser aberta, isso não indica nenhum problema com o ambiente X11.