Docker+VSCode有图形显示但cursor中报错
·
我复现论文时拉取了容器在本地VSCode运行,运行前先执行xhost +该命令行即可出现图形显示界面,但是在同样的步骤在cursor中同样实现了启动了X11和容器,但无法运行脚本,更没有办法显示图形界面,出现的报错为:
GLFWError: (65550) b'X11: The DISPLAY environment variable is missing'
warnings.warn(message, GLFWError)
/usr/local/lib/python3.8/dist-packages/glfw/__init__.py:917: GLFWError: (65537) b'The GLFW library is not initialized'
warnings.warn(message, GLFWError)
python: /builds/florianrhiem/pyGLFW/glfw-3.4/src/monitor.c:449: glfwGetVideoMode: Assertion monitor != NULL' failed.
Aborted (core dumped)
为什么同样的步骤在VSCode和cursor中是不同的呢?原因在于
在 VSCode 中,尤其是你使用了 “Remote Containers” 插件或 Docker 插件打开容器时:
-
VSCode 会自动传递主机的
DISPLAY变量 -
VSCode 会自动挂载
/tmp/.X11-unix -
VSCode 还会配置一些容器权限,允许 root 用户使用图形界面(
xhost +local:root)
但是Cursor 本质是一个 IDE(和 VSCode 不同),它:
-
没有自动配置图形显示环境
-
容器运行没有绑定主机的 X11 套接字
-
没有自动传入
DISPLAY环境变量 -
你运行
train.py时容器中无法访问图形驱动,导致 GLFW 初始化失败
解决办法:
重新创建一个容器
docker run -it \
--env DISPLAY=$DISPLAY \
--volume /tmp/.X11-unix:/tmp/.X11-unix \
--name container_name \
image_name \
bash
在命令行中将容器绑定主机的X11,传入DISPLAY环境变量即可。
除了创建新容器没有找到其他的解决办法。
更多推荐




所有评论(0)