You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSH连接Ubuntu Docker服务器运行SpinningUp时GL上下文创建失败求助

用Xvfb解决GL上下文创建失败问题

为什么选Xvfb

测试策略时需要渲染LunarLander环境画面,服务器本身没有物理显示器,哪怕通过SSH-X转发了X连接,GL上下文的兼容性还是容易出问题。Xvfb是虚拟X服务器,能在无物理屏幕的情况下提供虚拟显示环境,生成所需的GL上下文,全程在服务器端解决问题,不用依赖本地的显示能力,刚好适配你不想用本地运行的需求。

具体操作步骤

1. 安装Xvfb

在Ubuntu Docker容器内执行:

apt update && apt install -y xvfb

2. 临时运行(一次搞定)

直接在测试命令前加xvfb-run,自动创建虚拟显示并执行命令:

xvfb-run -a python -m spinup.run test_policy data/installtest/installtest_s0
  • -a 参数会自动找可用的显示端口,避免端口冲突

3. 持久化配置(反复用更方便)

如果要多次运行测试,先启动Xvfb服务,再设置环境变量:

# 启动Xvfb,指定显示端口为:10,屏幕分辨率1024x768
Xvfb :10 -screen 0 1024x768x16 &
# 设置环境变量,让后续命令用这个虚拟显示
export DISPLAY=:10
# 现在直接跑测试命令就行
python -m spinup.run test_policy data/installtest/installtest_s0

4. 自动配置(每次登录不用手动设)

把以下内容加到容器内的~/.bashrc文件末尾,每次SSH登录后自动启动Xvfb并配置环境:

# 检查Xvfb是否在运行,没运行就启动
if ! pgrep -x "Xvfb" > /dev/null; then
    Xvfb :10 -screen 0 1024x768x16 &
fi
export DISPLAY=:10
export LIBGL_ALWAYS_INDIRECT=1

之后每次登录容器,直接运行测试命令即可。

额外补充

  • 确保容器内装了必要的图形依赖,如果之前没装,执行:
apt install -y libgl1-mesa-glx libgl1-mesa-dri
  • 确认测试命令里的路径data/installtest/installtest_s0在容器内存在,路径要正确。

内容的提问来源于stack exchange,提问作者Riru setine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 22:35:52