- ROS機器人項目開發11例(原書第2版)
- (印)拉姆庫瑪·甘地那坦 郎坦·約瑟夫
- 1410字
- 2021-01-26 17:17:27
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工作空間。