Docker 安装 ROS 2
本文给出一个基于 Dockerfile + Docker Compose 的 ROS 2 Humble 安装流程,按步骤执行即可完成环境部署。
1. 准备目录结构
建议目录结构如下:
ros2_docker/ros2_docker/ws/ros2_docker/ws/src/ros2_docker/Dockerfileros2_docker/compose.yml
2. 编写 Dockerfile
在项目根目录创建并编辑 Dockerfile:
nano Dockerfile
FROM ros:humble-ros-base
ENV DEBIAN_FRONTEND=noninteractive
# ============================ 可按需配置 APT 镜像源 ============================
# ========
# 1. 永久切换 apt 源到中科大 USTC(ubuntu-ports,arm64 友好)
# ========
RUN set -eux; \
. /etc/os-release; \
codename="${VERSION_CODENAME:-jammy}"; \
\
cat > /etc/apt/sources.list <<EOF
deb https://mirrors.ustc.edu.cn/ubuntu-ports/ ${codename} main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu-ports/ ${codename}-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu-ports/ ${codename}-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu-ports/ ${codename}-security main restricted universe multiverse
EOF
# =======
# 2. (强烈建议)配置 APT 超时与重试,减少网络抖动影响
# =======
RUN printf 'Acquire::Retries "8";\nAcquire::http::Timeout "30";\nAcquire::https::Timeout "30";\n' \
> /etc/apt/apt.conf.d/99retries
RUN apt-get update && apt-get install -y --no-install-recommends \
ros-humble-desktop \
&& rm -rf /var/lib/apt/lists/*
# 保存并退出编辑器
3. 编写 compose.yml
在项目根目录创建并编辑 compose.yml:
nano compose.yml
services:
ros2:
build:
context: .
dockerfile: Dockerfile
container_name: ros2_desktop
init: true
tty: true
stdin_open: true
network_mode: host
privileged: true
environment:
- DISPLAY=${DISPLAY}
- QT_X11_NO_MITSHM=1
- XAUTHORITY=/tmp/.docker.xauth
- ROS_DOMAIN_ID=0
- RMW_IMPLEMENTATION=rmw_fastrtps_cpp
volumes:
- /dev:/dev
- ./ws:/root/ws
- /tmp/.X11-unix:/tmp/.X11-unix:rw
- /tmp/.docker.xauth:/tmp/.docker.xauth:rw
working_dir: /root
command: >
bash -c "
source /opt/ros/humble/setup.bash &&
exec bash
"
# 保存并退出编辑器
4. 构建镜像并启动容器
sudo docker compose build
sudo docker compose up -d
# 如需关闭容器:docker compose stop
sudo docker exec -it ros2_desktop bash
cd ws
colcon build
source install/setup.bash
5. 验证安装结果
# 验证安装是否成功
xhost +local:docker
rviz2
6. 验证失败时的补充处理
若上一步验证失败,可执行以下命令进行补装与环境配置:
apt update
apt install -y ros-humble-rviz2
nano ~/.bashrc
# 按以下顺序添加内容
source /opt/ros/humble/setup.bash
source ~/ws/install/setup.bash
rviz2