ros崩调之后一直卸载重装都弄不好,整了两天了整不动了,换docker试试看。
1.docker安装
首先是安装docker,根据官方文档https://docs.docker.com/engine/install/ubuntu/和中文文档https://yeasy.gitbook.io/docker_practice/install/ubuntu安装,安装完之后使用docker version命令验证一下,能打印出版本等信息就说明安装好了。
如果出现“permission denied while trying to connect to the Docker daemon socket at unix”报错,可以试试下面的指令:
sudo chmod 666 /var/run/docker.sock
2.docker基本使用
列出镜像:
docker image ls
列出容器:
docker container ls
终止容器:
docker container kill [containID]
删除容器:
docker container rm [containerID]
3.ros noetic docker
首先拉取一个ubuntu20.04的镜像
docker pull ubuntu:20.04
为了容器能有图形化显示,启动容器时添加.X11,系统终端开放X11显示权限
docker run -it --name ubuntu2004 -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix ubuntu:20.04 /bin/bash
同时,在主机运行
xhost + #允许所有主机连接X服务器
在docker 测试是否有图形化显示,测试结果为显示一个虚拟时钟
sudo apt-get install xarclock #安装这个小程序
xarclock
注意,docker 退出时, 需要关闭显示权限,保护系统
xhost -
在容器内安装ros noetic, 参考如何在 docker 容器中安装 ROS_docker安装ros-CSDN博客:
# 安装软件包
sudo apt-get update
sudo apt-get install -y lsb-release gnupg2
# 设置 ros 源:
sudo sh -c ' echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
# 设置秘钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
# 安装 ros noetic 桌面完整版
sudo apt-get update
sudo apt-get install -y ros-noetic-desktop-full
# 配置 ros 环境变量
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
# 安装打包工具依赖
sudo apt-get install -y python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
# 初始化 rosdep
sudo rosdep init
rosdep update
测试ros:
roscore #启动ros核心
# 另开一个shell
docker exec -it 容器ID/NAME /bin/bash
rosrun turtlesim turtlesim_node
# 再打开一个shell
docker exec -it 容器ID/NAME /bin/bash
rosrun turtlesim turtle_teleop_key
4.docker 启动状态查询,停止和启动,建立容器窗口
docker ps 指令显示系统正在运行的容器,关闭笔记本时需要退出容器
图片显示有一个容器正在运行
在主机终端base运行 停止容器命令:
docker stop ID/NAMES
# 例如: docker stop ubuntu0713
需要重新启动创建过的容器时:
docker start ID/NAMES
# 例如: docker start ubuntu0713
然后启动容器终端
docker exec -it ID/NAMES /bin/bash
5. 镜像保存
当docker的环境配置好时,为防止未来环境配置错误而重新恢复,需要存档,可以保存为一个自己的镜像文件,节省创建新镜像的时间和流量。
运行需要保存的docker->保存镜像->利用保存的镜像创建新的容器
docker commit ID/NAMES my_image_name