Docker images for ROS Updated More Frequently

Want Docker images for ROS that are updated more frequently? Check out

Or run this command

docker run --rm=true -ti ghcr.io/sloretz/ros:rolling-desktop ros2 --help

All images are automatically updated once per week at midnight GMT on Sunday. The images are also updated automatically after a sync.

What images are there?

The ROS 2 distros have an image for each variant defined by REP 2001. The ROS 1 distro ROS Noetic has an image for each metapackage defined by REP 142.

All images have multiarch support! See the table in the README for more info.

Stability

The images have been building successfully for a few weeks now, and I intend to keep them going indefinitely because I need them.

While a ROS distro is active I intend to manually delete images that are more than a year old, and when a ROS distro becomes EOL I intend to stop updating its images (but keep the last image produced forever).

Why not make the existing images update more frequently?

The official Docker Images for ROS (ex: ros:rolling) are great, but they’re limited in how often they can be updated due to a difficult to resolve issue. The images at ghcr.io/sloretz/ros solve it by being built with Github Actions instead of Docker Hub.

The osrf/ros images on Docker Hub are also great, but they only offer amd64 versions of the desktop, simulation, and desktop-full variants. The images at ghcr.io/sloretz/ros offer arm64 V8 versions too.

Contributing

If you’d like to improve something then see the CONTRIBUTING file.

6 Likes

Omg, thanks! We just needed this before the start of the semester :smiley: It’s a pity the official images are stuck, and I was wondering when we were choosing the right base image why are they in such a weird state. Maybe some food for thoughts of the Infrastructure WG?

Don’t you also plan providing images with Gazebo installed from the osrf apt repo? There’s currently no official image providing up-to-date ros with up-to-date gazebo (the ros-simulation packages all use gazebo from ros repos, which is usually a few months or years behind the osrf repo).

Can you point out a few examples of issues one might face with outdated ROS images?

As far as I know the packages in the official ROS images are not cloned and built so apt update && apt upgrade should be enough to stay up to date no? That’s what I do in my dockerfiles that inherit from official ROS images.

You have to dist-upgrade instead of just upgrade to allow installing new packages.

Except for that, this approach should handle most cases (except for e.g. the rare cases when apt keys expired).

There is a downside, though - it takes time to do the update, and you don’t know when the update is necessary. Using up-to-date base images will get you ridnof this unnecessary step. Practically, we’d really like to get rid of the update step when building arm images in emulation, where just the update takes an hour.

2 Likes

Thank you. Having more ros2 docker container examples is always good, as writing one yourself can be daunting at first. So I would like to mention other great containers for a streamlined ros2 expirence

These even inspired me to write one of my own.

1 Like

Don’t you also plan providing images with Gazebo installed from the osrf apt repo? There’s currently no official image providing up-to-date ros with up-to-date gazebo (the ros-simulation packages all use gazebo from ros repos, which is usually a few months or years behind the osrf repo).

I don’t have any plans to make Gazebo images at the moment from the osrf repo, though that does seem like a good idea! The simulation (ROS 2) and simulators (ROS 1) variant images are still using Gazebo from the ROS apt repo.

1 Like

Supplementary discussion on what it would take to adopt this strategy upstream:

1 Like