从这个article,它指出,windows 11本机支持运行的X11和wayland应用程序的wsl。
我试着通过一个docker容器做同样的事情,设置环境变量DISPLAY="host.docker.internal:0.0"
,运行一个gui应用程序(比如gedit
),但是我得到了这个错误:
Unable to init server: Could not connect: Connection refused
Gtk-WARNING **: 17:05:50.416: cannot open display: host.docker.internal:0.0
2条答案
按热度按时间rwqw0loc1#
我偶然发现了你的问题,而尝试同样的事情,你是和actually得到它的帮助下工作this blog post on Microsoft .我使用一个最小的Dockerfile基于Ubuntu和安装
gedit
:以常规方式创建映像,例如
docker build . -t guitest:1.0
在WSL命令行中,如下所示启动它:
我希望这对你也有好处。
nxagd54h2#
这个答案很大程度上是基于chrillof所说的。谢谢你给了我一个极好的开始!
对于使用WSL 2的Windows上的Docker Desktop用户来说,这里的关键是:
1.容器主机(即docker-desktop-data WSL 2发行版)本身没有
/tmp/.X11-unix
。该文件夹实际上位于docker-desktop发行版上的/mnt/host/wslg/.X11-unix
文件夹中,当运行容器时,该文件夹将转换为/run/desktop/mnt/host/wslg/.X11-unix
。1.没有现成的环境变量可以帮助您,因此您需要明确指定环境变量,并记住这些文件夹。
我发现了这个GitHub issue,其中有人必须手动设置环境变量,这使我能够将其他人在WSL 2上直接体验到的内容与chrillof的解决方案联系起来
因此,从主机使用PowerShell修改chrillof的解决方案,看起来更像:
在我的计算机上,它看起来像this (demo of WSLg X11)
需要说明的是,我没有检查音频是否正常工作,但是如果您已经安装了WSL 2,这确实允许您避免安装另一个X11服务器。