在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”解决办法-阿里云开发者社区