一、安装docker
1、使用阿里云镜像一键安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
2、如果一键安装有问题,则可以选择手动安装
1)卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
2)安装依赖
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
3)安装GPG证书
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
4)设置存储库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
5)安装docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
6)验证是否安装成功
sudo docker run hello-world
如果出现如下信息则安装成功
二、Docker中安装ROS容器
1、首先pull一个ROS的docker镜像,我这里用的是melodic版本,自己想用什么版本更改名字即可。
sudo docker pull osrf/ros:melodic-desktop-full
这里放个版本对于ubuntu系统的图以供参考:
2、由于第一步安装的ROS是没有实际项目所需要的环境依赖,所以我这里又编写了一个Dockerfile文件,用这个文件重新创建一个带依赖的ROS镜像。
该文件随便放一个文件夹,dockerfile文件内容如下:
FROM osrf/ros:melodic-desktop-full
# 如果机器带显卡,可以放开这里,我没用到,所以注释了
# ENV NVIDIA_VISIBLE_DEVICES \
# ${NVIDIA_VISIBLE_DEVICES:-all}
# ENV NVIDIA_DRIVER_CAPABILITIES \
# ${NVIDIA_DRIVER_CAPABILITIES:+$NVIDIA_DRIVER_CAPABILITIES,}graphics
# 自己需要什么依赖在这里加即可
RUN apt-get update && \
apt-get install -y \
libeigen3-dev \
libgoogle-glog-dev \
vim
在该文件路径下,打开终端,执行命令:(其中rocker为镜像的名称,可自定义)
docker build -f Dockerfile -t rocker .
执行完后用命令查看是否成功创建rocker这个镜像,有这个镜像则成功。
sudo docker images
执行命令利用上一步创建的镜像来创建容器:(其中 -v$(pwd):/data参数是指将当前目录挂载到ROS容器根目录data文件夹下,可以用来和宿主机进行文件交换),在docker run这一步命令中,我没注意到我参考的其他博主带的 --rm 参数,这个参数是指每次运行完,容器会自动删除。当时搞了我好久。
xhost +
sudo docker run -it -v$(pwd):/data --device=/dev/dri --group-add video --volume=/tmp/.X11-unix:/tmp/.X11-unix --env="DISPLAY=$DISPLAY" --name=catkin_rocker catkin_docker:latest /bin/bash
查看容器ID及状态:
sudo docker ps -a
终端进入容器,并打开roscore:
sudo docker exec -it your-docker-id /bin/bash
roscore
在打开一个终端,进入容器并执行rviz
至此,所有步骤及环境安装完毕。开始愉快的仿真吧。