终极解决方案重新配置 VcXsrv 替换显示地址第一步彻底重启 VcXsrvWindows 端关键右键 Windows 任务栏右下角的 VcXsrv 图标 → 选择Exit完全关闭 VcXsrv按Win R输入cmd以管理员身份启动命令提示符在管理员 cmd 中执行以下命令启动 VcXsrv强制关闭访问控制避免图形界面设置遗漏cmdC:\Program Files\VcXsrv\vcxsrv.exe :0 -ac -terminate -lesspointer -multiwindow -clipboard -wgl -dpi auto说明-ac就是Disable access control关闭访问控制这是解决连接拒绝的核心参数。第二步在容器内替换 DISPLAY 地址用 Windows 本机 IPhost.docker.internal偶尔会有解析问题直接用 Windows 的实际 IP 更稳定在 Windows 端按Win R输入cmd执行ipconfig找到WLAN / 以太网的 IPv4 地址比如192.168.1.100在容器内执行替换成你的 Windows IPbash运行# 用 Windows 实际 IP 替换 display 地址 export DISPLAY192.168.1.100:0 export QT_X11_NO_MITSHM1 # 重新测试 xeyes此时应弹出窗口 xeyes第三步启动 rviz2如果xeyes能正常显示直接启动bash运行source /opt/ros/humble/setup.bash rviz2兜底方案若仍无法连接检查 Windows 防火墙临时关闭 Windows 防火墙打开 Windows 设置 → 隐私和安全 → Windows 安全中心 → 防火墙和网络保护依次关闭 “专用网络”“公用网络” 防火墙测试完成后记得打开重新在容器内执行xeyes确认是否能显示。为什么之前的配置无效图形界面启动 VcXsrv 时可能误操作没勾选Disable access control用命令行启动能强制生效host.docker.internal依赖 Docker 网络解析偶尔会失效直接用 Windows 本机 IP 更可靠Windows 防火墙默认会拦截 X11 端口6000导致容器无法连接显示。总结核心问题是VcXsrv 未关闭访问控制或Windows 防火墙拦截而非容器内配置用命令行启动 VcXsrv带-ac参数 替换为 Windows 实际 IP能解决 99% 的连接拒绝问题xeyes能显示 → rviz2 必能启动反之先排查 VcXsrv 和防火墙。按这个步骤操作你就能看到 rviz2 的 GUI 窗口了。如果xeyes仍提示Cant open display告诉我你的 Windows IP 和 VcXsrv 启动方式我帮你定位最后一步问题。