本仓库是 ROS 镜像 的 arm64v8 架构专用构建仓库。关于非 amd64 架构的更多信息,可参考镜像文档中的 “除 amd64 外的架构?” 章节;若需了解镜像源码变更相关内容,参见***镜像 FAQ 的 “Git 中的镜像源码已变更,该如何处理?”。
开源机器人基金会(Open Source Robotics Foundation)
Docker 社区 Slack、Server Fault、Unix & Linux 或 Stack Overflow
humble-ros-core, humble-ros-core-jammyhumble-ros-base, humble-ros-base-jammy, humblehumble-perception, humble-perception-jammyjazzy-ros-core, jazzy-ros-core-noblejazzy-ros-base, jazzy-ros-base-noble, jazzy, latestjazzy-perception, jazzy-perception-noblekilted-ros-core, kilted-ros-core-noblekilted-ros-base, kilted-ros-base-noble, kiltedkilted-perception, kilted-perception-noblerolling-ros-core, rolling-ros-core-noblerolling-ros-base, rolling-ros-base-noble, rollingrolling-perception, rolling-perception-noble(更多信息)
amd64、arm64v8
repo-info 仓库的 repos/ros/ 目录(历史记录)
(包含镜像元数据、传输大小等)
official-images 仓库的 library/ros 标签
official-images 仓库的 library/ros 文件(历史记录)
docs 仓库的 ros/ 目录(历史记录)
机器人操作系统(ROS)是一套用于构建机器人应用的软件库和工具集,涵盖从驱动程序到前沿算法,配合强大的开发工具,为各类机器人项目提供所需功能。ROS 完全开源。
参考:***.org/wiki/Robot_Operating_System
如需创建自定义 ROS 镜像并安装特定包,以下示例展示了如何通过 apt-get 安装***发布的 Debian 包(以 C++ 和 Python 客户端库示例包为例):
dockerfileFROM arm64v8/ros:rolling-ros-core as aptgetter # 安装 ROS 包 RUN apt-get update && apt-get install -y \ ros-${ROS_DISTRO}-demo-nodes-cpp \ ros-${ROS_DISTRO}-demo-nodes-py && \ rm -rf /var/lib/apt/lists/* # 启动 ROS 包 CMD ["ros2", "launch", "demo_nodes_cpp", "talker_listener_launch.py"]
说明:所有 ROS 镜像均包含默认入口点(entrypoint),会在执行命令前自动加载 ROS 环境配置。上述示例中,入口点会先加载环境,再执行示例包的启动文件。
构建并运行镜像的命令如下:
console$ docker build -t my/ros:aptgetter . $ docker run -it --rm my/ros:aptgetter [INFO] [launch]: process[talker-1]: started with pid [813] [INFO] [launch]: process[listener-2]: started with pid [814] [INFO] [talker]: Publishing: 'Hello World: 1' [INFO] [listener]: I heard: [Hello World: 1] [INFO] [talker]: Publishing: 'Hello World: 2' [INFO] [listener]: I heard: [Hello World: 2] ...
如需从源码构建自定义 ROS 包并生成镜像,以下示例展示了多阶段构建流程:安装构建依赖、编译源码、将产物复制到最终运行镜像,以减小镜像体积。
dockerfileARG FROM_IMAGE=arm64v8/ros:rolling ARG OVERLAY_WS=/opt/ros/overlay_ws # 阶段 1:缓存依赖信息 FROM $FROM_IMAGE AS cacher ARG OVERLAY_WS # 更新 apt 和 ROS 索引,持久化缓存配置 RUN rosdep update --rosdistro $ROS_DISTRO && \ cat <<EOF > /etc/apt/apt.conf.d/docker-clean && apt-get update APT::Install-Recommends "false"; APT::Install-Suggests "false"; EOF # 克隆示例源码到工作空间 WORKDIR $OVERLAY_WS/src RUN cat <<EOF | vcs import . repositories: ros2/demos: type: git url: [***] version: ${ROS_DISTRO} EOF # 提取构建和运行依赖 RUN bash -e <<'EOF' declare -A types=( [exec]="--dependency-types=exec" [build]="") for type in "${!types[@]}"; do rosdep install -y \ --from-paths \ ros2/demos/demo_nodes_cpp \ ros2/demos/demo_nodes_py \ --ignore-src \ --reinstall \ --simulate \ ${types[$type]} \ | grep 'apt-get install' \ | awk '{gsub(/'\''/,"",$4); print $4}' \ | sort -u > /tmp/${type}_debs.txt done EOF # 阶段 2:构建源码 FROM $FROM_IMAGE AS builder ARG OVERLAY_WS # 安装构建依赖 COPY --from=cacher /tmp/build_debs.txt /tmp/build_debs.txt RUN --mount=type=cache,target=/etc/apt/apt.conf.d,from=cacher,source=/etc/apt/apt.conf.d \ --mount=type=cache,target=/var/lib/apt/lists,from=cacher,source=/var/lib/apt/lists \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ < /tmp/build_debs.txt xargs apt-get install -y # 编译源码 WORKDIR $OVERLAY_WS COPY --from=cacher $OVERLAY_WS/src ./src RUN . /opt/ros/$ROS_DISTRO/setup.sh && \ colcon build \ --packages-select \ demo_nodes_cpp \ demo_nodes_py \ --mixin release # 阶段 3:生成运行镜像 FROM $FROM_IMAGE-ros-core AS runner ARG OVERLAY_WS # 安装运行依赖 COPY --from=cacher /tmp/exec_debs.txt /tmp/exec_debs.txt RUN --mount=type=cache,target=/etc/apt/apt.conf.d,from=cacher,source=/etc/apt/apt.conf.d \ --mount=type=cache,target=/var/lib/apt/lists,from=cacher,source=/var/lib/apt/lists \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ < /tmp/exec_debs.txt xargs apt-get install -y # 复制编译产物并配置环境 ENV OVERLAY_WS=$OVERLAY_WS COPY --from=builder $OVERLAY_WS/install $OVERLAY_WS/install RUN sed --in-place --expression \ '$isource "$OVERLAY_WS/install/setup.bash"' \ /ros_entrypoint.sh # 启动示例 CMD ["ros2", "launch", "demo_nodes_cpp", "talker_listener_launch.py"]
优化说明:
--mount 复用缓存数据,避免重复网络请求;ros-core 构建最终镜像,仅复制必要的编译产物。构建后镜像体积对比(示例):
console$ docker image ls my/ros --format "table {{.Tag}}\t{{.Size}}" TAG SIZE aptgetter 504MB # 通过 apt 安装的镜像 runner 510MB # 多阶段构建的运行镜像 builder 941MB # 编译阶段临时镜像 $ docker image ls ros --format "table {{.Tag}}\t{{.Size}}" TAG SIZE rolling-ros-core 489MB # 基础 ros-core 镜像 rolling 876MB # 完整 ros 镜像
本镜像基于 *** Ubuntu 镜像 和 ROS *** Debian 包构建,提供稳定的机器人应用开发/部署平台。适用于科研和工业场景,简化自主控制、任务规划、定位导航、群体行为等复杂系统的开发、复用和交付流程。
容器化技术解决了 ROS 软件的可重复性和跨平台部署难题,帮助中小团队降低协作成本,专注于算法创新而非环境配置。
ros-core:最小化 ROS 安装(仅含核心组件);ros-base:包含基础工具和库(通常以发行版名称为标签,LTS 版本标记为 latest)。注意:ros-core 不含 rosdep、colcon 等开发工具,需使用 ros-base 获取完整开发环境。图形化相关的 desktop 等元包可在 OSRF 的 Docker Hub 仓库 获取。
ROS 日志等数据默认存储在 ~/.ros/ 目录。如需持久化,可将该目录挂载到主机卷:
console$ docker run -v "/home/ubuntu/.ros/:/root/.ros/" arm64v8/ros
如需访问相机、输入设备或 GPU,可通过 --device 参数挂载设备:
console$ docker run --device /dev/video0:/dev/video0 arm64v8/ros # 挂载摄像头
ROS 支持分布式通信,建议通过 Docker 网络连接多个容器。如需简化外部通信,可使用 host 网络模式(注意:此模式会移除容器网络隔离,可能影响 DDS 通信,详情参见 相关文档)。
以下示例通过 docker compose 启动两个容器(发布者和订阅者),演示跨容器 ROS 通信。
创建目录 ~/ros_demos,放入前文“通过 Dockerfile 安装 ROS 包”中的 Dockerfile,并新建 compose.yaml:
yamlservices: talker: build: ./ command: ros2 run demo_nodes_cpp talker # C++ 发布节点 listener: build: ./ environment: - "PYTHONUNBUFFERED=1" # 实时输出 Python 日志 command: ros2 run demo_nodes_py listener # Python 订阅节点
console# 构建并启动容器(后台运行) $ cd ~/ros_demos && docker compose up -d # 查看订阅节点日志 $ docker compose logs listener # 停止并清理容器 $ docker compose stop && docker compose rm # (可选)删除自动创建的网络 $ docker compose down
镜像中软件的许可证信息可在 包索引 中查询。
Docker 镜像可能包含基础系统(如 Bash)及依赖软件,其许可证需

来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429