[RFC] Restricting the size of ROS docker images

Hi Docker users!

There is an ongoing effort to reduce the footprint of ROS installations and several leads are being explored, from the infrastructure level, to individual packages.
Some improvements can be made at the Docker file level, we’d like to present these changes here before rolling them out, allowing us to get feedback and make sure your use cases are still enabled.

Changes to be rolled out soon:

  • All ROS / ROS 2 / Gazebo Dockerfiles will now be installing only the required dependencies. The “recommended” dependencies will not be installed anymore (use of the --no-install-recommends apt flag).
  • the ros-core images will not include the ROS bootstrapping / building tools anymore (removal of rosdep, rosinstall, colcon packages for ROS 2) these packages will now be part of the generic base image, aka ros:<ROS_DISTRO> or ros:<ROS_DISTRO>-ros-base
    • this means that images based on ros:<ROS2_DISTRO>-ros-core images will not have colcon or compilers installed by default. If you use those in CI you’ll need to make sure to install the building tools you need.
    • the osrf/ros2:devel image including all the building and testing tools for ROS 2 can/should be used as a base for ROS 2 CI

With these changes we expect to save around 100-200MB on the image sizes.
The new Dockerfiles they are available here , if you’re a consumer of these images, please give them a try and let us know!

Thanks!

7 Likes