How to Install Docker on the Qualcomm® Robotics RB3 development platform
Docker makes it easier to package an application into containers and run it in different development environments. Using a container simplifies the process of making ROS, an open-source meta-operating system for robots, available to the Qualcomm Robotics RB3 development platform. (Note that it is possible to install ROS without Docker, but that currently requires installing multiple dependencies.)
As described in Flashing a New, Complete Image (from Linaro) onto the Board, the image from Linaro has been successfully tested with Docker and a container for ROS. ROS does not need to be inside a Docker container, but that is currently the simplest procedure for getting ROS to work on the Qualcomm Robotics RB3 development platform.
Update the Qualcomm Robotics RB3 development board
Flash the board with the latest version of the Linaro Debian desktop image.
Set up Docker
To pull images from Docker, first create a Docker account.
Uninstall old versions of Docker.
$ sudo apt-get remove docker docker-engine docker.io containerd runc
Install Docker using the repository
Set up the repository
Update the apt package index:
$ sudo apt-get update
Install packages to allow HTTPS:
$ sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
Add Docker’s official GPG Key:
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add –
Verify the key with fingerprint:$ sudo apt-key fingerprint 0EBFCD88pub 4096R/0EBFCD88 2017-02-22Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88uid Docker Release (CE deb) firstname.lastname@example.org 4096R/F273FCD8 2017-02-22
Set up the Stable repository for arm64 platform:
$ sudo add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
Install Docker Engine - Community
$ sudo apt-get update$ sudo apt-get install docker-ce docker-ce-cli containerd.io
Once you run the foregoing commands, you may see an error indicating failure, as in this screenshot:
Check the version of Docker:
$ sudo docker version
The screenshot below indicates that the Docker Engine is installed, but the daemon is not running.
$ sudo service docker start
The following error message will appear:
The problem is that the Docker installer uses iptables for network address translation (NAT). However, Debian uses a modified version of nftables. One option is to convert the entries to nftables.
Alternately, you can set Debian up to use iptables-legacy by running these commands:
$ sudo update-alternatives --set iptables /usr/sbin/iptables-legacy$ sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
$ sudo service docker start
Once Docker is running, pull a ROS image:
docker pull ros
Qualcomm Robotics RB3 is a product of Qualcomm Technologies, Inc. and/or its subsidiaries.