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

相关推荐
美酒没故事°1 天前
Open WebUI安装指南。搭建自己的自托管 AI 平台
人工智能·windows·ai
云烟成雨TD1 天前
Spring AI Alibaba 1.x 系列【6】ReactAgent 同步执行 & 流式执行
java·人工智能·spring
小O的算法实验室1 天前
2026年ASOC,基于深度强化学习的无人机三维复杂环境分层自适应导航规划方法,深度解析+性能实测
算法·无人机·论文复现·智能算法·智能算法改进
AI攻城狮1 天前
用 Obsidian CLI + LLM 构建本地 RAG:让你的笔记真正「活」起来
人工智能·云原生·aigc
鸿乃江边鸟1 天前
Nanobot 从onboard启动命令来看个人助理Agent的实现
人工智能·ai
lpfasd1231 天前
基于Cloudflare生态的应用部署与开发全解
人工智能·agent·cloudflare
俞凡1 天前
DevOps 2.0:智能体如何接管故障修复和基础设施维护
人工智能
comedate1 天前
[OpenClaw] GLM 5 关于电影 - 人工智能 - 的思考
人工智能·电影评价
财迅通Ai1 天前
6000万吨产能承压 卫星化学迎来战略窗口期
大数据·人工智能·物联网·卫星化学
liliangcsdn1 天前
Agent Memory智能体记忆系统的示例分析
数据库·人工智能·全文检索