自学内容网 自学内容网

在ubuntu上安装ubuntu22.04并ros2 humble版本的docker容器记录

需要安装,但网上资料很多并不能解决问题记录如下:

1、修改/etc/hosts文件

增加
108.160.166.137 registry-1.docker.io
185.199.108.133 raw.githubusercontent.com
 

2、编辑/etc/docker/daemon.json 文件

{
    "registry-mirrors" : ["https://你的.mirror.swr.myhuaweicloud.com"],
    "dns" : ["8.8.8.8", "8.8.4.4"]
}
 

3、编辑的dockerfile文件:

# 使用 Ubuntu 22.04 作为基础镜像
FROM ubuntu:22.04

# 设置环境变量
ENV DEBIAN_FRONTEND=noninteractive

# 更新包列表并安装必要的依赖
RUN apt-get update && \
    apt-get install -y \
    curl \
    gnupg2 \
    lsb-release \
    bash-completion

# 添加 ROS 2 的官方 GPG 密钥
RUN curl -s https://gitee.com/ohhuo/rosdistro/raw/master/ros.asc | apt-key add -

# 添加 ROS 2 的仓库
RUN echo "deb [arch=$(dpkg --print-architecture)] https://repo.huaweicloud.com/ros2/ubuntu/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/ros2.list

# 更新包列表
RUN apt-get update

# 检查仓库中的可用包
RUN apt-cache policy ros-humble-desktop python3-argcomplete python3-colcon-common-extensions python3-rosdep python3-ros2cli python3-vcstool

# 安装 ROS 2 Humble
RUN apt-get install -y \
    ros-humble-desktop \
    python3-argcomplete \
    python3-colcon-common-extensions \
    python3-rosdep \
    python3-vcstool

# 将本地的 20-default.list 文件复制到容器中
COPY 20-default.list /etc/ros/rosdep/sources.list.d/20-default.list

# RUN rosdep init

# 修改 rosdep 源为国内源
# RUN sed -i 's|https://raw.githubusercontent.com/ros|https://gitee.com/ohhuo|g' /etc/ros/rosdep/sources.list.d/20-default.list

# 修复 rosdep 权限
RUN rosdep fix-permissions

# 初始化 rosdep
RUN rosdep update

# 确保 /etc/sudoers.d 目录存在
RUN mkdir -p /etc/sudoers.d

# 创建并写入 /etc/sudoers.d/robot 文件
RUN echo 'robot ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/robot && \
    chmod 0440 /etc/sudoers.d/robot
    
# 创建一个新的用户
RUN useradd -ms /bin/bash robot

# 创建一个工作目录并更改所有权
RUN mkdir -p /home/robot/workspace && chown -R robot:robot /home/robot/workspace

# 启用 bash-completion
RUN echo 'source /etc/bash_completion' >> /etc/bash.bashrc

# 切换到新用户
USER robot

# 设置默认命令
CMD ["bash"]

 

4、已经打包了ubuntu22.04+ros2 humble的docker容器,如果大家有需要,请留言邮箱。

参考网页

Docker pull拉取镜像报错“Error response from daemon: Get "https://registry-1.docker.io/v2”解决办法-阿里云开发者社区


原文地址:https://blog.csdn.net/zgneu/article/details/143770833

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!