本文是对自己学习过程的一个记录和总结,如果内容有误,请大家指点,感谢。
本文内容是在ubuntu22.04环境下进行的,并且已经安装了ros2 humble【如果您没有安装,那后面小海龟的例子您不运行就好了】。主要内容包括安装Docker,并在Docker中拉取含有ros2环境的镜像,最后通过容器进行实例化等操作。如果我这里的废话您听不懂,那也没关系,接下来只要跟着我一步一步进行操作,就能顺利完成。并且我还细心的给每一步都配上了我的截图,以作参考【其实我是怕我自己时间久了忘记了】。
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
sudo systemctl status docker
docker container run hello-world
注意: 出现这个提示是因为在默认情况下,Docker守护程序绑定到用户root拥有的UNIX套接字(而不是TCP端口)。因此,Docker守护程序始终以root用户身份运行,要运行Docker命令,您需要在命令前面加上sudo,成功运行后,结果如下图所示。
sudo docker container run hello-world
如果每次使用Docker命令都需要在前面加上sudo,这肯定让人头疼,那怎么解决呢?首先我们需要了解的是,在安装Docker的过程中,会创建一个名为docker的组。当Docker守护进程启动时,它会创建一个UNIX套接字,docker组的成员可以访问这个套接字(它授予的权限相当于root用户),所以我们只需要把当前登录的用户添加到docker组中即可。
sudo usermod -aG docker $USER
注意:执行这句命令后是没有任何提示的。
newgrp docker
groups
注意:接下来可以抛开sudo,随心所欲的使用Docker命令了。
docker container run hello-world
注意: 如果您的运行结果还是和第8步一样,重启电脑试试呢。
docker image ls
注意: Docker安装完成时,是没有镜像的,当前有一个hello-woeld镜像,是因为我们在运行hello-world容器时,自动从Docker仓库中下载的镜像,因为容器运行的前提条件是镜像存在,如果不存在,就自动下载。
docker ps -a
注意: Docker安装完成时,也是没有容器的,而当前却有两个容器存在,是因为我们在前面成功运行了两次hello-world容器,所以现在有两个容器,可以看到两个容器都是依赖的同一个镜像【hello-world镜像】。
docker container rm 容器名或容器id
此时再使用以下命令查看已有容器时,就只有一个容器了,结果如下图所示。
docker ps -a
docker pull ryuichiueda/ubuntu22.04-ros2
注意:含有ros2环境的镜像有很多,您可以去Docker仓库查看。
docker image ls
从上图中可以看到,目前Docker中已有两个镜像,第二个就是刚才下载的ubuntu22.04镜像。
下面这句命令是创建一个容器,可以从下图中看出,我自定义容器的名字为do_humble,使用的镜像是刚下载的ryuichiueda/ubuntu22.04-ros2,使用这句命令后,我们将直接创建容器,并进入到容器内。
docker run --name 自定义容器名字 -it 镜像名字
此时就可以在这个容器里面愉快的使用ros2了,并且这个容器能直接和您的主机进行通信,如果您主机上也安装了ros2,那么就可以直接使用ros2的分布式通信了。
请不要关闭已进入容器的终端,重新打开一个终端,在新打开的终端中运行小海龟节点。
ros2 run turtlesim turtlesim_node
在已进入容器的终端中运行小海龟键盘控制节点,此时按键盘的方向键就能对小海龟进行控制了。
ros2 run turtlesim turtle_teleop_key
exit
【1】Ubuntu22.04安装Docker_菜鸟分享录的博客-CSDN博客
【2】 如何在Ubuntu 20.04上安装和使用Docker