Docker中实现rviz和Gazebo可视化及文件夹挂载

方法来源:
[Ubuntu]Docker中配置ROS并可视化Rviz及Gazebo
解决关于Docker运行容器使用GPU资源时的异常:could not select device driver ““ with capabilities: [[gpu]]

解除Xserver限制

根据带ros的ubuntu镜像创建容器,创建容器前需要在终端输入以下指令解除Xserver限制

xhost +

出现以下响应即成功
image

创建容器

docker run -it -v [/home/xxx/Projects:/home/xxx/Projects] \
--gpus all --env="NVIDIA_DRIVER_CAPABILITIES=all" \
--volume=/tmp/.X11-unix:/tmp/.X11-unix --volume=/dev/dri:/dev/dri \
--device=/dev/snd --device=/dev/dri --env="DISPLAY=$DISPLAY" \
--name=[container_name] [IMAGE_ID]  /bin/bash
docker run -it -v /media/fusi/practise/dockers/Docker_sagittarius/sagittarius_ws/:/home/sagittarius_eyeinhand --gpus all --env="NVIDIA_DRIVER_CAPABILITIES=all" --volume=/tmp/.X11-unix:/tmp/.X11-unix --volume=/dev/dri:/dev/dri  --device=/dev/snd --device=/dev/dri --env="DISPLAY=$DISPLAY" --name=sagittarius 1494acf75e0c

解释说明:
-v 挂载路径,设功能包在实机的~/Desktop/catkin_ws,想要挂载到容器的~/Desktop/my_ws上,则为

-v ~/Desktop/catkin_ws:~/Desktop/my_ws

[container_name] 容器名字
[IMAGE_ID] 来源镜像的ID

/bin/bash问题

image
可能是ENTRYPOINT 或 CMD 导致 /bin/bash 被当作数据执行,改为如下形式即可
(保持该格式,尝试了在其他地方加入--entrypoint /bin/bash依旧报错,该格式成功进入,如果失败,可尝试其他方法https://www.cnblogs.com/Fosi/p/19033404 )

sudo docker run -it --entrypoint /bin/bash \
-v [/home/xxx/Projects:/home/xxx/Projects] \
--device=/dev/dri --group-add video \
--volume=/tmp/.X11-unix:/tmp/.X11-unix \
--env="DISPLAY=$DISPLAY"  --name=[container_name] [IMAGE_ID]

https://zhuanlan.zhihu.com/p/686808757

posted @ 2025-12-22 16:40  Fosi  阅读(6)  评论(0)    收藏  举报