ubuntu 22.04 ros2docker镜像
配置 Ubuntu 22.04 和 ROS 2 的 Docker 镜像
对于希望在 Ubuntu 22.04 上运行 ROS 2 并利用 Docker 容器化技术的人来说,官方提供了多种预构建的 Docker 映像来简化这一过程。这些映像包含了 ROS 2 所需的各种依赖项以及工具链。
获取并使用 ROS 2 Docker 映像
为了获取适用于 Ubuntu 22.04 的 ROS 2 Docker 映像,可以访问 Docker Hub 中由 ROS 维护者发布的官方仓库。通常情况下,ROS 2 的版本会对应不同的标签,例如 foxy
或 humble
等等。下面是一个简单的命令用于拉取最新版的 ROS 2 Foxy Fitzroy Docker 映像:
docker pull ros:foxy-ros-base-focal
此命令将会从 Docker Hub 下载名为 ros
的镜像,并指定特定于 ROS 2 Foxy 版本的基础映像,该基础映像是基于 Ubuntu Focal(即 20.04),但对于大多数应用来说,在 Ubuntu 22.04 主机上也能很好地工作[^1]。
如果需要针对 Ubuntu 22.04 更精确匹配,则可能要查找社区贡献或其他第三方提供的映像;不过需要注意的是,非官方资源可能存在兼容性和安全性方面的问题,因此建议优先考虑官方渠道。
一旦成功下载了所需的 Docker 映像之后,就可以通过如下方式启动容器来进行开发或测试活动:
docker run -it --rm --name my_ros_container \
--network host \
-v /dev:/dev \
-v ~/ros2_ws:/root/ros2_ws \
ros:foxy-ros-base-focal
上述命令创建了一个交互式的终端会话 (-it
) ,并且设置了几个选项以便更好地支持 ROS 应用程序的功能需求,比如共享主机网络栈(--network host
)、挂载设备节点(-v /dev:/dev),还有将本地的工作空间目录映射到容器内部[-v ~/ros2_ws:/root/ros2_ws]。
构建自定义 ROS 2 Dockerfile
除了直接使用现有的 Docker 映像外,还可以编写自己的 Dockerfile 来定制环境。这允许更灵活地控制安装哪些软件包和服务。这里给出一个基本的例子作为起点:
FROM ubuntu:jammy
# 设置环境变量以避免交互提示符
ENV DEBIAN_FRONTEND=noninteractive
# 更新APT缓存并将必要的键添加至APT密钥环中
RUN apt-get update && \
apt-get install -y software-properties-common gnupg2 lsb-release wget && \
echo "deb [arch=$(dpkg --print-architecture)] http://repo.ros2.org/ubuntu/main $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/ros2-latest.list && \
wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | apt-key add -
# 安装ROS 2和其他所需组件
RUN apt-get update && \
apt-get install -y ros-humble-desktop python3-colcon-common-extensions python3-argcomplete && \
rm -rf /var/lib/apt/lists/*
# 初始化ROS 2环境脚本
COPY ./setup.bash /
CMD ["bash", "-c", ". /setup.bash; exec bash"]
这个例子中的 FROM 行指定了基础操作系统为最新的 Ubuntu LTS 发行版 (Jammy Jellyfish, 即 22.04)。后续各行则负责更新 APT 软件源列表、导入 ROS GPG 密钥、添加 ROS 2 存储库地址、安装核心桌面级 ROS 2 套件以及其他一些辅助工具。最后两行用来复制初始化脚本进入容器并在启动时执行它。
相关推荐


















