Ubuntu22.04安装Docker并搭建ros2环境
下面这句命令是创建一个容器,可以从下图中看出,我自定义容器的名字为do_humble,使用的镜像是刚下载的ryuichiueda/ubuntu22.04-ros2,使用这句命令后,我们将直接创建容器,并进入到容器内。Docker安装完成时,是没有镜像的,当前有一个hello-woeld镜像,是因为我们在运行hello-world容器时,自动从Docker仓库中下载的镜像,因为容器运行的前提条件是镜
本文是对自己学习过程的一个记录和总结,如果内容有误,请大家指点,感谢。
注意:
本文内容是在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
参考:
更多推荐
所有评论(0)