Docker容器内运行rqt报错Could not connect to any X display如何解决
Docker容器运行rqt等GUI程序报错修复方案
报错核心原因为宿主机X Server未授权容器访问显示接口、容器内缺少XDG_RUNTIME_DIR环境变量配置,若系统默认启用Wayland显示服务器也会触发该问题,可按以下步骤修复:
第一步:宿主机执行X Server访问授权
在宿主机终端直接运行以下命令,临时开放本地root用户的X Server访问权限:xhost +local:root该配置重启宿主机后失效,如需永久生效可将上述命令添加到当前用户的
~/.bashrc文件末尾。第二步:切换显示服务器为Xorg
Ubuntu 22.04及以上版本默认启用Wayland显示服务器,不支持X11容器GUI转发,可在系统登录界面点击右下角齿轮图标,选择「Ubuntu on Xorg」后重新登录系统。第三步:补全容器内环境变量
执行docker exec -it my_container bash进入容器后,运行以下命令配置缺失的环境变量:export XDG_RUNTIME_DIR=/tmp/runtime-root mkdir -p $XDG_RUNTIME_DIR chmod 0700 $XDG_RUNTIME_DIR再执行
echo $DISPLAY查看输出,确认和宿主机执行同命令的结果一致,若不一致手动赋值即可,示例:export DISPLAY=:1第四步:验证配置有效性
容器内先安装基础X11测试工具:apt update && apt install -y x11-apps运行
xclock命令,若正常弹出时钟窗口说明GUI转发配置生效,此时再运行rqt即可正常启动。
如果仍启动失败,可在容器内执行nvidia-smi验证显卡驱动挂载是否正常,你原有容器启动参数的显卡、显示相关配置无需调整。
内容的提问来源于stack exchange,提问作者Mohamad Al Mdfaa
相关产品推荐
相关产品推荐

