最近工作中遇到离线主机需要部署ros的需求,想到的解决方式就是使用docker来搞了,对于有使用经验的同学来说docker是多么优美又好用的工具,可是对于docker小白来说,还是要step by step尝试一下的。
首先,找一台在线主机安装docker:
1、更新现有的包列表:
sudo apt update
2、使用apt安装一些允许通过HTTPS才能使用的软件包:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
3、将官方Docker存储库的GPG密钥添加到系统:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
4、将Docker存储库添加到APT源:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
5、使用新添加的repo源中的Docker包更新包数据库:
sudo apt update
6、确保从Docker repo安装而不是默认的Ubuntu repo:
apt-cache policy docker-ce
Docker的版本号可能不同,但您还是会看到这样的输出:
7、安装Docker:
sudo apt install docker-ce
8、安装好之后检查是否正在运行:
sudo systemctl status docker
输出类似以下内容则表明该服务处于工作状态:
9、用hello-world 做一下try run测试:
docker run hello-world
输出下面的内容则表示Docker正常工作:
到现在Docker已经安装好了,接下来就是制作ros镜像,ros镜像官网docker官网已经打包好,我们只需要拉去下来打成.tar就好了,步骤如下:
1、拉取docker官方镜像:
sudo docker pull osrf/ros:noetic-desktop-full
2、下载完成后,可通过以下命令查看镜像:
sudo docker images
目前已存在镜像如图:
3、打包ros镜像:
sudo docker save osrf/ros:noetic-desktop-full -o ros.tar
到此ros镜像打包结束,接下来就是离线主机内部署的工作了,要想部署docker镜像,首先需要安装docker,因为该主机是离线状态,所以只能是离线方式进行安装了。
1、下载离线安装包,Docker的离线安装需要用到containerd.io ,docker-ce-cli,docker-ce,从官方链接可以下载指定的版本。
2、安装docker
将Docker的3个deb文件copy到离线主机,然后用sudo dpkg -i x.deb,依次进行安装,安装的顺序为:containerd.io ,docker-ce-cli,docker-ce。
3、启动Docker
sudo systemctl start docker
4、查看Docker的状态
sudo systemctl status docker
5、设置Docker的开机自启动
sudo systemctl enable docker.service
6、查看开机自启动是否添加成功
sudo systemctl list-unit-files |grep docker
接下来把打包好的ros镜像copy到离线主机进行挂载。
1、加载镜像
sudo docker load -i ros.tar
2、运行镜像并挂载本地目录
sudo docker run -it -v /path of local/:/path of image/
到现在离线部署就搞定啦,参考链接: