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 启动方式,我帮你定位最后一步问题。

相关推荐
ZPC82101 小时前
docker 镜像备份
人工智能·算法·fpga开发·机器人
ssshooter1 小时前
免费和付费 AI API 选择指南
人工智能·aigc·openai
琢磨先生David1 小时前
Day1:基础入门·两数之和(LeetCode 1)
数据结构·算法·leetcode
掘金酱1 小时前
「寻找年味」 沸点活动|获奖名单公示🎊
前端·人工智能·后端
AI周红伟1 小时前
周红伟:智能体全栈构建实操:OpenClaw部署+Agent Skills+Seedance+RAG从入门到实战
大数据·人工智能·大模型·智能体
颜酱1 小时前
栈的经典应用:从基础到进阶,解决LeetCode高频栈类问题
javascript·后端·算法
Wishell20151 小时前
人工智能中卷积
人工智能
多恩Stone1 小时前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
生信大杂烩2 小时前
癌症中的“细胞邻域“:解码肿瘤微环境的空间密码 ——Nature Cancer 综述解读
人工智能·算法