1.9.2 安装Docker
可以通过两种方法安装Docker:通过Ubuntu仓库;使用Docker官方仓库。
·如果读者只是想要快捷安装Docker,则可以选择从Ubuntu仓库安装,因为只需执行一行命令,并且能够节省一些时间;
·如果读者想要较为深入地了解Docker,而不是仅仅通过本书的概述来了解,则推荐通过Docker的官方仓库安装,因为其版本更加稳定,有相应bug的修复,还有一些新的特性。
在进行安装之前,请执行以下命令来对apt包索引进行更新:$sudo apt-get update
1.从Ubuntu仓库安装Docker
从Ubuntu仓库安装Docker只需执行以下命令:
在通过上述方法安装Docker之后,如果读者想要移除Docker,或者想要体验从Docker官方仓库进行安装的过程,则可以通过下面的方法将已经安装的Docker移除。
2.移除Docker
如果读者想要用最新的稳定版Docker替换已经安装的旧版本,则可以使用以下命令移除已安装的Docker,移除之后,即可从Docker官方仓库安装最新的Docker。移除的命令如下:
上述命令是移除Docker的通用命令,将移除Docker、docker-engine、docker.io(这些是旧版本的名称),如果有运行时容器的话,也会一同移除。
3.从Docker仓库安装
从Docker仓库安装的步骤如下:
1)执行以下命令:
2)添加源自Docker的官方GPG密钥:
3)执行以下命令来配置Docker官方仓库:
官方Docker提供了三个更新通道,分别是稳定通道、夜间通道以及测试通道。测试通道提供用于可用性测试的预发行版,夜间通道是正在开发中的版本或beta版本,稳定通道是已修复bug的最终确定版本。Docker团队的最佳建议是稳定通道;但是,感兴趣的读者可以通过将stable替换为nightly或test来测试其他两个通道。
4)再次更新apt包索引:
5)使用以下命令安装Docker包:
6)使用上述两种方法中的任意一种完成Docker的安装后,均可以使用以下命令查看Docker的版本:
当前Ubuntu仓库中的最新版本为17.12,Docker官方仓库的最新版本则是18.09(稳定版)。
默认情况下,Docker只能作为根用户运行。为便于运行,读者可以使用以下命令将自己的用户名添加到Docker组:
为了使得设置生效,需要重启系统,否则可能会遇到“permission denied”(权限拒绝)错误,如图1.19所示。
图1.19 权限拒绝错误
上述错误的一个快速修复方法是在任何Docker命令之前使用sudo。
4.使用Docker
容器由Docker镜像构建,这些镜像可以从Docker Hub(https://hub.docker.com/)中提取。我们可以使用以下命令从ros仓库中提取ROS容器:
如果命令运行无误,将得到如图1.20所示的输出。
图1.20 成功提取Docker
读者可以指定特定的ROS版本来工作。对于任何应用程序,最好的建议是从melodic-core开始,因为在这里可以继续工作并更新与项目目标相关的容器,而不必安装其他不必要的组件。读者可以使用以下命令查看Docker镜像:
默认情况下,所有的容器均保存在/var/lib/docker目录下。使用前面的命令,可以标识仓库名称和标记。在本书的例子中,对于ros仓库名称,相应的标记是melodic-ros-core。因此,可以使用以下命令运行ros容器:
$docker images命令提供的其他信息是容器ID,在本书的例子中是7c5d1e1e5096。当读者想移除容器时,将会用到该ID信息。进入Docker后,可以使用以下命令检查可用的ROS功能包:
运行和退出Docker时,将会创建另一个容器,因此对于初学者来说,经常会在不知不觉中创建一系列容器。读者可以使用$docker ps-a或$docker ps-l查看所有活动/非活动的容器或最新的容器,并使用$docker rm<docker_name>删除容器。要继续在同一容器中工作,可以使用以下命令:
这里,silly_volhard是所创建容器的默认名称。
现在,你打开了同一容器,则可以安装ROS功能包并将相应的更改提交给Docker。使用下面的命令安装actionlib_tutorials功能包:
现在,当再次检查ROS功能包列表时,将能够查看到一些额外的功能包。由于你已经修改了容器(安装了上述功能包),所以在重新打开Docker镜像时需要提交修改。使用以下命令退出容器并提交修改:
现在我们已经在Ubuntu和VirtualBox上安装了ROS,下面让我们学习如何设置ROS工作空间。