ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

连接黑屏还是分辨率错乱?docker-ros2-desktop-vnc 常见 10 大故障排查清单

连接黑屏还是分辨率错乱?docker-ros2-desktop-vnc 常见 10 大故障排查清单 连接黑屏还是分辨率错乱docker-ros2-desktop-vnc 常见 10 大故障排查清单【免费下载链接】docker-ros2-desktop-vnc Dockerfiles to provide HTML5 VNC interface to access Ubuntu Desktop ROS 2项目地址: https://gitcode.com/gh_mirrors/do/docker-ros2-desktop-vnc如果你用 docker-ros2-desktop-vnc 在浏览器里访问 Ubuntu 桌面 ROS 2却遇到黑屏、连不上、分辨率不对等问题别急着重装环境。本文整理 10 个最常见的故障现象与快速排查方法帮你 5 分钟内定位问题根源。先搞懂画面是怎么传到你浏览器的理解下面的链路排查问题会快很多vncserver(:1, 1920x1080) → websockify(容器内 80 端口) → 浏览器(宿主机 6080 端口)容器内 VNC 服务监听5901websockify 在80端口转发见 humble/entrypoint.sh 中的 supervisord 配置段你需要把宿主机6080映射到容器80然后访问http://127.0.0.1:6080noVNC 的远程调整大小remote resize已默认开启在 humble/Dockerfile 中通过修改ui.js实现故障排查 10 大清单1. 打开网页一片黑屏先查端口映射现象页面能打开但桌面区域全黑。排查确认运行命令中端口映射为-p 6080:80而不是映射到 5900 或 5901。然后执行docker port 容器ID如果输出里没有6080 - 80重新运行容器并修正映射。2. 6080 端口被占用换个端口就好现象启动报port is already allocated。原因6080 已被其他进程或上一个没删掉的容器占用。解决改成任意空闲端口即可例如-p 6081:80然后访问http://127.0.0.1:6081。3. 登录密码错误默认密码是 ubuntu现象noVNC 弹出密码框怎么输都进不去。原因容器启动时会把 VNC 密码写入 noVNC 前端。若未设置PASSWORD环境变量默认密码为ubuntu见 jazzy/entrypoint.sh 中VNC_PASSWORD${PASSWORD:-ubuntu}。解决直接输入ubuntu或启动时-e PASSWORD你的密码自定义。4. Ubuntu 22.04 镜像启动失败加 seccomp 参数现象容器一启动就报错退出日志里出现 seccomp 相关字样。原因基于 Ubuntu Jammy 的镜像在部分 Docker 环境下需要放开 seccomp 限制。容器启动日志中也明确提示了这一点entrypoint 末尾的 NOTE 1。解决docker run -p 6080:80 --security-opt seccompunconfined ghcr.io/tiryoh/ros2-desktop-vnc:lyrical5. 分辨率不对、屏幕偏大偏小默认是 1920x1080现象桌面比例和浏览器窗口不匹配出现大片留白或截断。原因VNC 固定以-geometry 1920x1080 -depth 24启动。虽然 noVNC 默认开启了 remote resize浏览器窗口改变时会通知 VNC 端调整但某些情况如浏览器缩放异常下仍会错位。解决先尝试手动调整浏览器窗口大小等待 1~2 秒看桌面是否跟随缩放若不行用 VNC 客户端直连宿主机5901端口验证服务端分辨率是否正常需要固定其他分辨率的可基于 rolling/Dockerfile 修改 entrypoint 中的 geometry 参数重新构建6. 拖动浏览器窗口后桌面不跟随缩放现象窗口拉大拉小画面尺寸纹丝不动。排查检查 noVNC 的 remote resize 是否生效。该项由 Dockerfile 中的sed命令默认开启如果你基于旧版 Dockerfile 自行构建过镜像可能仍是off重新从仓库拉取最新镜像即可。7. Apple Silicon 上 Gazebo 装不了arm64 本来就不含仿真包现象在 M 系列 Mac 上找不到ros-gazebo-ros-pkgs等仿真相关包。原因上游仿真包在 arm64 上尚未就绪所以 arm64 镜像主动跳过了仿真包安装humble/Dockerfile 中if [ $TARGETPLATFORM linux/amd64 ]的判断逻辑。这不是故障而是当前限制。解决需要仿真时用--platformlinux/amd64运行 amd64 镜像通过 QEMU 模拟能跑但较慢。8. 拉不到镜像 / 拉到了已停更的版本选对 tag现象拉取 dashing、eloquent、galactic 等旧版本 tag 遇到问题。原因这些旧版本已标记 deprecated。目前活跃维护的镜像见 docker-bake.hclhumble、iron、jazzy即 latest、kilted、lyrical、rolling。建议新项目直接用jazzy或latest生产环境建议固定具体版本 tag 而非 latest。9. 容器重启后连不上X 锁文件残留现象用docker commit把运行中容器保存成新镜像后再启动就黑屏或 VNC 起不来。原因/tmp/.X1-lock和/tmp/.X11-unix/X1残留会导致新容器里 VNC 无法创建 X 显示。解决各版本的 entrypoint如 humble/entrypoint.sh 中的vnc_run.sh段已内置清理逻辑升级镜像后重启即可自行构建的旧镜像可补上同样的清理脚本。10. 终端里 ROS 2 命令找不到确认环境变量已加载现象桌面能进但输入ros2提示 command not found。原因source /opt/ros/$ROS_DISTRO/setup.bash已写入用户~/.bashrcentrypoint 负责但图形界面里的终端若未加载该文件就不会生效。解决新开一个终端窗口或手动执行source /opt/ros/你的版本/setup.bash后再试。一页速查表#现象最快解法1黑屏检查-p 6080:80映射2端口冲突换-p 6081:803密码错误默认密码ubuntu4启动即退出加--security-opt seccompunconfined5分辨率不对默认 1920x1080调整浏览器窗口触发缩放6缩放不跟随重新拉取最新镜像remote resize 默认开启7arm64 无仿真包上游限制改用 amd64 平台8镜像版本不对选用 jazzy/latest 等活跃 tag9重启后连不上更新镜像清理 X 锁文件10ros2 命令找不到新开终端或 source setup.bash 小提示桌面卡顿、切换窗口掉帧时把启动参数--shm-size512m调大到1g多数情况明显改善。按顺序从上往下排查90% 的连接问题都能在第一条到第四条解决剩下的分辨率类问题集中在第 5、6 条。希望这份 docker-ros2-desktop-vnc 故障排查清单能帮你快速恢复桌面环境专心写 ROS 2 代码。【免费下载链接】docker-ros2-desktop-vnc Dockerfiles to provide HTML5 VNC interface to access Ubuntu Desktop ROS 2项目地址: https://gitcode.com/gh_mirrors/do/docker-ros2-desktop-vnc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表