如何用Docker部署ROS2

自身电脑ubuntu20.04

由于工作需要humble,遂采用docker安装

安装之前可以先用鱼香ROS的一键安装代码,里面又一键安装docker以及ROS docker版

但是一键安装过程中有人可能出现报错,无法下载(比如我),所以整理一下安装的全过程

Error response from daemon: Get "https://registry-1.docker.io/v2/": 
net/http: request canceled while waiting for connection
 (Client.Timeout exceeded while awaiting headers)
​

一 安装docker

安装docker这一步采用鱼香ROS的一键安装,比起网上很多帖子都好用。

安装好之后可以使用下面命令检验是否安装成功

docker --version #查询版本

docker run hello-world # 下载测试镜像并输出欢迎信息

如果能成功输出 “hello-world" 即为安装成功

二 安装docker后部署ROS2

2.1安装docker后先更换源

2.1.1 新建文件 /etc/docker/daemon.json

这个etc在计算机文件夹下,在主目录下是找不到的

2.1.2 输入国内docker hub地址。我推荐使用VS code 编辑(因为Vim不是很熟练)

{
    "registry-mirrors": [
      "https://docker.m.daocloud.io",
      "https://dockerproxy.com",
      "https://docker.mirrors.ustc.edu.cn",
      "https://docker.nju.edu.cn"
    ]
}

2.1.3 修改/etc/resolv.conf (VS code)

nameserver 114.114.114.114
nameserver 8.8.8.8

 2.1.4 保存之后在终端运行命令生效修改

sudo systemctl daemon-reload
sudo systemctl restart docker

    在运行过程中,需要加入docker用户组,否则会出现下面的报错(如果出现报错的请看2.2)
    (没出现报错请移步2.3)

    (base) hdr@hdr:~$ sudo systemctl daemon-reload
    (base) hdr@hdr:~$ sudo systemctl restart docker
    (base) hdr@hdr:~$ docker pull ros:humble
    permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.49/images/create?fromImage=docker.io%2Flibrary%2Fros&tag=humble": dial unix /var/run/docker.sock: connect: permission denied

    2.2 创建 docker 用户组(若已加入可以跳过此步骤)

    创建用户组

    sudo groupadd docker  # 如果提示组已存在可忽略

     加入用户组

    sudo usermod -aG docker $USER  # 将用户 hdr 加入 docker 组

     刷新用户组权限

    newgrp docker  # 立即激活组权限变更(无需重启系统)

    测试 

    docker run hello-world  # 测试非 root 权限运行容器

    2.3 安装ROS2 humble版本

    以下是安装 ROS2 Humble 版本的完整整理流程,结合 Docker 环境进行优化说明:

    2.3.1 拉取 ROS2 Humble 镜像

    docker pull ros:humble  # 从官方仓库下载基础镜像
    • 镜像大小约 1.2GB,耐心等待下载完成

    2.3.2 创建并启动容器

    docker run -it --network=host -d \
      -v /dev:/dev \  
      -v /tmp/.X11-unix:/tmp/.X11-unix \  # 允许 GUI 显示
      --name humble \
      -e DISPLAY=${DISPLAY} \  # 传递显示变量
      --restart=always \  # 自动重启
      ros:humble \
      /bin/bash  # 启动 Bash Shell
    • 关键参数说明​:
      • --network=host:容器共享宿主机网络,避免端口映射问题
      • -v /tmp/.X11-unix:必需用于 RViz/RQT 等 GUI 工具

    2.3.3 配置 X11 权限

    xhost +local:  # 安全模式:仅允许本地用户访问 X Server

    2.3.4 进入容器环境

    docker ps -a  # 查看容器 ID(我的是 e06329ced499)
    docker exec -it e06329ced499 /bin/bash  # 进入容器 这个e06329ced499是容器ID,需要换成自己的
    #注意e06329ced499后面有个空格 这个命令接收两个参数 e06329ced499 和 /bin/bash

    2.3.​5 创建 用户

    useradd -m -s /bin/bash ubuntu  # 创建用户
    passwd ubuntu  # 设置密码(输入两次)
    usermod -aG sudo ubuntu  # 赋予 sudo 权限

    2.3.6. 更新系统及安装依赖

    apt-get update -y && apt-get upgrade -y  # 更新软件包
    apt-get install vim -y  # 安装文本编辑器
    apt-get install ros-humble-desktop-full -y  # 安装完整桌面版
    • ros-humble-desktop-full 包含 RViz、Gazebo 等可视化工具

    2.3.7 配置环境变量

    echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc  # 永久生效
    source ~/.bashrc  # 立即加载环境

    2.3.8. 验证安装

    ros2 run turtlesim turtlesim_node #ROS2最最熟悉的小海龟
    

     

     

    如果能出现一只可爱的小海龟,那么说明你成功了!

     

    好了,这些就是我这两天遇到的坑。

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值