Ubuntu18.04 Docker容器中如何用docker exec -d后台运行rviz?
解决Docker容器后台启动RVIZ的问题
问题根源
RVIZ依赖ROS的环境变量(如ROS_PACKAGE_PATH等),直接执行rviz时未加载ROS初始化脚本,会导致进程启动后立即退出;而gedit作为普通桌面应用,无需ROS环境,只要X11转发配置正常就能运行。
解决方案
确认容器X11转发配置正确
虽然你能启动gedit,但仍需确认容器启动时已挂载X11权限:
启动容器的命令需包含以下参数:docker run -itd --name walker-container -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix ubuntu:18.04同时主机需开放X11访问权限(执行一次即可):
xhost +local:加载ROS环境后启动RVIZ
Ubuntu18.04对应ROS Melodic,执行后台命令时先source ROS的初始化脚本:docker exec -d walker-container bash -c "source /opt/ros/melodic/setup.bash && rviz"确保进程后台稳定运行
如果上述命令仍无窗口响应,可使用nohup避免进程因bash退出而终止,同时重定向输出:docker exec -d walker-container bash -c "source /opt/ros/melodic/setup.bash && nohup rviz > /dev/null 2>&1 &"验证RVIZ进程状态
执行以下命令检查容器内是否有RVIZ进程:docker exec walker-container ps aux | grep rviz如果进程存在但无窗口,重启容器并重新执行上述命令即可。
内容的提问来源于stack exchange,提问作者yucheng cheng
相关产品推荐
相关产品推荐

