在本系列博文中,我将Pytorch部署在Win11为宿主的Docker中,并成功的调用GPU进行了训练。这为我提供了很多便利。

        今天在进行3D相关的深度学习研究时我遇到了一些问题:[Open3D WARNING] GLFW Error: X11: Failed to open display :0 [Open3D WARNING] Failed to initialize GLFW。

        报错的原因是我在docker中的代码调用了一些显示的功能。Docker可以被看做是一个没有显示器的主机,那么所有显示相关的操作就都会报错了。我查阅了很多资料,但几乎没有人在Windows宿主机上解决这个问题,所以我将我的解决办法分享出来,希望帮助到同样遇到这个问题的朋友。

解决办法:

1. 在windows上安装VcXsrv。安装的过程可以参考这篇博文,Run GUI app in linux docker container on windows host - DEV Community,重点需要关注的地方就是第三步记得选择“忽略用户控制”。

2. 查看你的WSL的IP。在控制台输入ipconfig后,找到你的WSL对应的地址。如下图是我的ip地址。之前查看了很多相关的为docker挂载显示器的博客,其中都是使用了本机的物理地址或127.0.0.1,我使用后都是不成功的,因为这些博客的宿主机都是linux,而我使用的是windows。

3. 启动你的镜像,并添加显示器参数。--gpus all 为docker添加GPU,-e DISPLAY=172.24.176.1:0.0是将显示器挂在给docker。0.0是VcXsrv的默认端口,这里我们直接使用即可。

docker run -it --gpus all -e DISPLAY=172.24.176.1:0.0 64829364c309c96e90e90576025dd152fab83040a59f65b4fda9ceb2898dbecc

4. 在docker中运行带有GUI的程序,测试是否成功。以下代码会安装一个GUI时钟软件,并显示一个时钟。

apt-get install xarclock
xarclock

        如果你运行了代码,时钟顺利的显示到你的显示器上,那么恭喜你,你已经成功完成了配置!

Logo

一站式 AI 云服务平台

更多推荐