本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
本仓库是 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 客户端库示例包为例):
FROM 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 环境配置。上述示例中,入口点会先加载环境,再执行示例包的启动文件。
构建并运行镜像的命令如下:
$ 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 包并生成镜像,以下示例展示了多阶段构建流程:安装构建依赖、编译源码、将产物复制到最终运行镜像,以减小镜像体积。
ARG 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 构建最终镜像,仅复制必要的编译产物。构建后镜像体积对比(示例):
$ 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/ 目录。如需持久化,可将该目录挂载到主机卷:
$ docker run -v "/home/ubuntu/.ros/:/root/.ros/" arm64v8/ros
如需访问相机、输入设备或 GPU,可通过 --device 参数挂载设备:
$ docker run --device /dev/video0:/dev/video0 arm64v8/ros # 挂载摄像头
ROS 支持分布式通信,建议通过 Docker 网络连接多个容器。如需简化外部通信,可使用 host 网络模式(注意:此模式会移除容器网络隔离,可能影响 DDS 通信,详情参见 相关文档)。
以下示例通过 docker compose 启动两个容器(发布者和订阅者),演示跨容器 ROS 通信。
创建目录 ~/ros_demos,放入前文“通过 Dockerfile 安装 ROS 包”中的 Dockerfile,并新建 compose.yaml:
services: talker: build: ./ command: ros2 run demo_nodes_cpp talker # C++ 发布节点 listener: build: ./ environment: - "PYTHONUNBUFFERED=1" # 实时输出 Python 日志 command: ros2 run demo_nodes_py listener # Python 订阅节点
# 构建并启动容器(后台运行) $ 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 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429