docker 使用GUI ROS2

终极解决方案:重新配置 VcXsrv + 替换显示地址

第一步:彻底重启 VcXsrv(Windows 端,关键!)
  1. 右键 Windows 任务栏右下角的 VcXsrv 图标 → 选择 Exit,完全关闭 VcXsrv;

  2. Win + R 输入 cmd,以管理员身份启动命令提示符;

  3. 在管理员 cmd 中执行以下命令启动 VcXsrv(强制关闭访问控制,避免图形界面设置遗漏): cmd

    复制代码
    "C:\Program Files\VcXsrv\vcxsrv.exe" :0 -ac -terminate -lesspointer -multiwindow -clipboard -wgl -dpi auto

    说明:-ac 就是 Disable access control(关闭访问控制),这是解决连接拒绝的核心参数。

第二步:在容器内替换 DISPLAY 地址(用 Windows 本机 IP)

host.docker.internal 偶尔会有解析问题,直接用 Windows 的实际 IP 更稳定:

  1. 在 Windows 端按 Win + R 输入 cmd,执行 ipconfig,找到 WLAN / 以太网 的 IPv4 地址(比如 192.168.1.100);

  2. 在容器内执行(替换成你的 Windows IP): bash

    运行

    复制代码
    # 用 Windows 实际 IP 替换 display 地址
    export DISPLAY=192.168.1.100:0
    export QT_X11_NO_MITSHM=1
    
    # 重新测试 xeyes(此时应弹出窗口)
    xeyes
第三步:启动 rviz2

如果 xeyes 能正常显示,直接启动:

bash

运行

复制代码
source /opt/ros/humble/setup.bash
rviz2

兜底方案:若仍无法连接(检查 Windows 防火墙)

  1. 临时关闭 Windows 防火墙:
    • 打开 Windows 设置 → 隐私和安全 → Windows 安全中心 → 防火墙和网络保护;
    • 依次关闭 "专用网络""公用网络" 防火墙(测试完成后记得打开);
  2. 重新在容器内执行 xeyes,确认是否能显示。

为什么之前的配置无效?

  1. 图形界面启动 VcXsrv 时,可能误操作没勾选 Disable access control,用命令行启动能强制生效;
  2. host.docker.internal 依赖 Docker 网络解析,偶尔会失效,直接用 Windows 本机 IP 更可靠;
  3. Windows 防火墙默认会拦截 X11 端口(6000),导致容器无法连接显示。

总结

  1. 核心问题是 VcXsrv 未关闭访问控制Windows 防火墙拦截,而非容器内配置;
  2. 用命令行启动 VcXsrv(带 -ac 参数)+ 替换为 Windows 实际 IP,能解决 99% 的连接拒绝问题;
  3. xeyes 能显示 → rviz2 必能启动,反之先排查 VcXsrv 和防火墙。

按这个步骤操作,你就能看到 rviz2 的 GUI 窗口了。如果 xeyes 仍提示 Can't open display,告诉我你的 Windows IP 和 VcXsrv 启动方式,我帮你定位最后一步问题。

相关推荐
黎阳之光7 小时前
视听融合新范式!黎阳之光打破视觉边界,声影协同赋能全域智慧管控
大数据·人工智能·物联网·算法·数字孪生
Ian在掘金7 小时前
SSE 还是 WebSocket?从 AI 流式输出聊到实时通信选型
前端·人工智能
雨雨雨雨雨别下啦7 小时前
心理健康AI助手 - 项目总结
前端·javascript·vue.js·人工智能·信息可视化
PILIPALAPENG7 小时前
第4周 Day 3:多 Agent 协作——让 Agent 们"组队干活"
前端·人工智能·python
AI绘画哇哒哒7 小时前
Agent三种思考模式深度解析:CoT/ReAct/Plan-and-Execute,小白程序员必看,助你轻松掌握大模型精髓(收藏版)
人工智能·学习·ai·程序员·大模型·产品经理·转行
塔能物联运维8 小时前
存量机房降本增效:两相液冷技术解锁全生命周期成本优化密码
大数据·人工智能
传说故事8 小时前
【论文阅读】RoboAgent: 通过语义增强和动作分块实现机器人操作的泛化与效率
论文阅读·机器人·agent
玖釉-8 小时前
栈——栈的定义及基本操作
c++·windows·算法·图形渲染
黎阳之光8 小时前
黎阳之光:视频孪生智慧厂网一体化解决方案|污水处理全场景智能化升级
大数据·人工智能·物联网·安全·数字孪生
Omics Pro8 小时前
填补蛋白质组深度学习预处理教学空白
人工智能·python·深度学习·plotly·numpy·pandas·scikit-learn