Docker Environment Setup
xrobot-org/Docker-Image currently provides the following Docker images.
There are seven images:
docker-image-stm32docker-image-esp32docker-image-ch32-riscvdocker-image-linuxdocker-image-webotsdocker-image-mspm0docker-image-hpm
Image Contents
docker-image-stm32
- Based on
ubuntu:24.04 - Includes
arm-gnu-toolchain-14.2.rel1 - Includes
starm-clang - Pins
stm32cube-ide-coreto1.1.0, because newer package lines no longer provide the Linux-sidecubedownloader
docker-image-mspm0
- Built from the same Dockerfile as
docker-image-stm32; provides the GNU Armarm-none-eabitoolchain for MSPM0 builds
docker-image-ch32-riscv
- Based on
ubuntu:24.04 - Uses WCH GCC15 v240
- Compiler prefix:
riscv32-wch-elf- - Includes the matching OpenOCD
docker-image-hpm
- Based on
ubuntu:24.04 - Provides the GNU
riscv32-unknown-elftoolchain (hpm-linux-gcc-release v0.1.0), installed in/opt/hpm-riscv32-unknown-elf; the path is recorded inXR_HPM_TOOLCHAIN_ROOT
docker-image-esp32
- Based on
ubuntu:24.04 - Preinstalls
ESP-IDF v5.4.1 - Installed at
~/esp/esp-idf - Suitable for the standard
idf.pyworkflow - The image does not set up the IDF environment; run
. ~/esp/esp-idf/export.shbefore usingidf.py
docker-image-linux
- Based on
ubuntu:24.04 - Preinstalls
clang / cmake / ninja / gcc / g++ / gdb - Preinstalls
libwpa-client-dev / libnm-dev / libudev-dev / libgpiod-dev - Preinstalls
pkg-config,libeigen3-devand OpenCV 4.13.0 - Suitable for native Linux driver and toolchain work
docker-image-webots
- Based on
ubuntu:24.04 - Preinstalls Webots R2025a, OpenVINO 2025.4 and OpenCV 4.13.0
Images for BSPs and Templates
The CI of each repository uses the image below; the same image can be used to build the repository locally:
| Repository | Image |
|---|---|
STM32 BSPs (bsp-dev-c, bsp-dev-mc02, BSP-OpenCR-1.0, bsp_stm32f103), through the shared workflow bsp-stm32-ci.yml | docker-image-stm32 |
Module repositories, through the shared workflow module-ci.yml | docker-image-linux |
| bsp-linux-autoaim, bsp-webots-autoaim | docker-image-webots |
| CH32V203C8_LibXR_Template, CH32V307_LibXR_Template | docker-image-ch32-riscv |
| HPM5301_LibXR_Template | docker-image-hpm |
| MSPM0G3507_LibXR_Template | docker-image-mspm0 |
GHCR
Current pulls use GHCR:
docker pull ghcr.io/xrobot-org/docker-image-stm32:maindocker pull ghcr.io/xrobot-org/docker-image-esp32:maindocker pull ghcr.io/xrobot-org/docker-image-ch32-riscv:maindocker pull ghcr.io/xrobot-org/docker-image-linux:maindocker pull ghcr.io/xrobot-org/docker-image-webots:maindocker pull ghcr.io/xrobot-org/docker-image-mspm0:maindocker pull ghcr.io/xrobot-org/docker-image-hpm:main
Docker Hub
The same images are also published on Docker Hub (:latest):
docker pull xrimage/xrimage-stm32docker pull xrimage/xrimage-esp32docker pull xrimage/xrimage-ch32-riscvdocker pull xrimage/xrimage-linuxdocker pull xrimage/xrimage-webotsdocker pull xrimage/xrimage-mspm0docker pull xrimage/xrimage-hpm
Run a container
docker run -it --rm <image-name>
To mount a local workspace, bind the working directory explicitly:
docker run -it --rm -v "$PWD":/work -w /work ghcr.io/xrobot-org/docker-image-linux:main