TL;DR: Support for both ARM and Debian with ROS is now reflected in the Official DockerHub library!
As you might have noticed, DockerHub is beginning to support additional architectures other than amd64 . So I’ve expanded upon our dockerfile maintenance infrastructure for the official ROS images to enable arm support.
Additionally while refactoring, support for multiple operating systems, i.e. debian based ROS images, has also been enabled, while also extending to supported arm architectures. To see the listing of supported suites, distros and architectures for the official DockerHub library, you can view the manifest for ROS here :
- New tags have been added to specify the operating system suite via appended suffix
- There are no changes to the original set of tags, as they still point to the same suite
- Additionally true for
amd64tagged images hosted from osrf/ros automated repo
- The official registry will internally negotiate what arch is pulled via the manifest
- E.g. if docker-engine host is
docker pull rosshould pull an
- E.g. if docker-engine host is
- Multi-architecture ROS images are also mirrored under separate docker hub organizations
docker pull arm64v8/rosOR
docker pull arm32v7/ros:lunar
- You may reference
<arch>/ros:<tag>to specifically pull a target architecture
- There is some build scaffolding you can follow for multi-architecture image builds for ROS
This is all fairly new, so if you’d like to start learning more, here’s a relatively recent article on the subject :
Of course, if you’d like to play around with any of the arm images, but don’t have raspberry pie or other arm based platform laying around, you can easily emulate via qemu-user and binfmt-support. By installing the necessary binfmt-support kernel module and qemu-user static binaries to the host, you can run commands within the arm environment, e.g. on your
amd64 workstation. This may require forthcoming patches to your debian binfmt-support package depending upon your distribution, so should encounter runtime issues, you may follow these instructions here .
$ sudo apt install qemu-user-static ... $ uname -a Linux ubuntu 4.8.0-58-generic #63~16.04.1-Ubuntu SMP Mon Jun 26 18:08:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux $ docker run -it arm64v8/ros:lunar-ros-core-stretch uname -a Unable to find image 'arm64v8/ros:lunar-ros-core-stretch' locally lunar-ros-core-stretch: Pulling from arm64v8/ros 774bc81cd4dd: Pull complete ... Digest: sha256:dd88dce3f840cc963a61881a1da4f36f1c66214dd1b0029fa433580a4f5a142f Status: Downloaded newer image for arm64v8/ros:lunar-ros-core-stretch Linux a2a63cc39389 4.8.0-58-generic #63~16.04.1-Ubuntu SMP Mon Jun 26 18:08:51 UTC 2017 aarch64 GNU/Linux $ docker run -it arm64v8/ros:lunar-ros-core-stretch cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 9 (stretch)" NAME="Debian GNU/Linux" VERSION_ID="9" VERSION="9 (stretch)" ID=debian ...
If you find issues with the images, please be sure to ticket them here :
Also don’t forget to share our official repo  so others might discover it!
i386 binaries are supplied by the ROS buildfarm, I’ve deliberately omitted it for now, given:
i386binaries for docker-engine are not officially shipped or supported by Docker
- Current traffic for
i386ROS packages is below that for arm