本文是对自己学习过程的一个记录和总结,如果内容有误,请大家指点,感谢。

注意:

        本文内容是在ubuntu22.04环境下进行的,并且已经安装了ros2 humble【如果您没有安装,那后面小海龟的例子您不运行就好了】。主要内容包括安装Docker,并在Docker中拉取含有ros2环境的镜像,最后通过容器进行实例化等操作。如果我这里的废话您听不懂,那也没关系,接下来只要跟着我一步一步进行操作,就能顺利完成。并且我还细心的给每一步都配上了我的截图,以作参考【其实我是怕我自己时间久了忘记了】。


一、安装Docker

 1.更新apt软件包

sudo apt update

2.安装相关依赖包【中途输入y并回车继续】

 sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

3.设置Docker镜像源

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 $(lsb_release -cs) stable"

5. 再次更新apt,确保后续安装的是最新版的Docker

sudo apt update

 6.安装Docker【中途输入y并回车继续】

sudo apt install docker-ce docker-ce-cli containerd.io

7.查看Docker的状态【如下图所示代表Docker正在运行,ctrl+c退出状态查看】

sudo systemctl status docker

8.运行hello-world容器

docker container run hello-world

注意: 出现这个提示是因为在默认情况下,Docker守护程序绑定到用户root拥有的UNIX套接字(而不是TCP端口)。因此,Docker守护程序始终以root用户身份运行,要运行Docker命令,您需要在命令前面加上sudo,成功运行后,结果如下图所示。

sudo docker container run hello-world

9.将非root用户添加到docker组中

        如果每次使用Docker命令都需要在前面加上sudo,这肯定让人头疼,那怎么解决呢?首先我们需要了解的是,在安装Docker的过程中,会创建一个名为docker的组。当Docker守护进程启动时,它会创建一个UNIX套接字,docker组的成员可以访问这个套接字(它授予的权限相当于root用户),所以我们只需要把当前登录的用户添加到docker组中即可。

sudo usermod -aG docker $USER

注意:执行这句命令后是没有任何提示的。

10.激活对docker组的更改

newgrp docker 
groups

 注意:接下来可以抛开sudo,随心所欲的使用Docker命令了。

11.实践出真知,再次运行hello-world容器

docker container run hello-world

注意: 如果您的运行结果还是和第8步一样,重启电脑试试呢。

12. 查看Docker中已有的镜像

docker image ls

注意: Docker安装完成时,是没有镜像的,当前有一个hello-woeld镜像,是因为我们在运行hello-world容器时,自动从Docker仓库中下载的镜像,因为容器运行的前提条件是镜像存在,如果不存在,就自动下载。

13.查看Docker中已有的容器

docker ps -a

注意: Docker安装完成时,也是没有容器的,而当前却有两个容器存在,是因为我们在前面成功运行了两次hello-world容器,所以现在有两个容器,可以看到两个容器都是依赖的同一个镜像【hello-world镜像】。

14.删除容器

docker container rm 容器名或容器id

        此时再使用以下命令查看已有容器时,就只有一个容器了,结果如下图所示。

docker ps -a


二、搭建ros2环境

1.从Docker仓库拉取镜像

docker pull ryuichiueda/ubuntu22.04-ros2

注意:含有ros2环境的镜像有很多,您可以去Docker仓库查看。

2.再次查看Docker中已有的镜像

docker image ls

        从上图中可以看到,目前Docker中已有两个镜像,第二个就是刚才下载的ubuntu22.04镜像。

3.创建容器

        下面这句命令是创建一个容器,可以从下图中看出,我自定义容器的名字为do_humble,使用的镜像是刚下载的ryuichiueda/ubuntu22.04-ros2,使用这句命令后,我们将直接创建容器,并进入到容器内。

docker run --name 自定义容器名字 -it 镜像名字

 4.运行ROS2小海龟

        此时就可以在这个容器里面愉快的使用ros2了,并且这个容器能直接和您的主机进行通信,如果您主机上也安装了ros2,那么就可以直接使用ros2的分布式通信了。

        请不要关闭已进入容器的终端,重新打开一个终端,在新打开的终端中运行小海龟节点。

ros2 run turtlesim turtlesim_node

        在已进入容器的终端中运行小海龟键盘控制节点,此时按键盘的方向键就能对小海龟进行控制了。

ros2 run turtlesim turtle_teleop_key

 5.退出容器

exit

 


参考:

 【1】Ubuntu22.04安装Docker_菜鸟分享录的博客-CSDN博客

 【2】 如何在Ubuntu 20.04上安装和使用Docker

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐