一、准备工作
主要是因为国内网络的问题,可能导致镜像拉取失败,解决办法参考:镜像加速
二、安装运行过程
2.1拉取镜像:
sudodocker pull arm64v8/ubuntu:20.04
这个是ubuntu的拉取指令,其他的也是类似。
2.2 运行镜像
为了在 AMD64 主机上运行 ARM64 容器,你需要安装 QEMU 并注册 binfmt 支持。以下是详细步骤:
安装 QEMU
安装 QEMU 用户模式仿真器:
sudoapt-get update
sudoapt-getinstall-y qemu-user-static
注册 binfmt:
Docker 提供了一个方便的镜像来注册 binfmt,可以使用以下命令:
docker run --rm--privileged multiarch/qemu-user-static --reset-pyes
验证 QEMU 是否正确安装
你可以使用以下命令来验证:
docker run --rm--privileged multiarch/qemu-user-static:register --reset
运行 ARM64 容器
在安装和注册 QEMU 之后,你应该可以在 AMD64 主机上运行 ARM64 容器:
sudodocker run --platform linux/arm64 -it arm64v8/ubuntu:20.04
2.3 宿主机目录共享
在 Docker 中,可以通过挂载主机目录到容器内的方式实现目录共享。这通常是通过 -v 或 --mount 选项来实现的。以下是具体的步骤和示例:
使用 -v 选项挂载目录
-v 选项用于挂载主机目录到容器内的目录。格式为:-v 主机目录:容器目录。
sudodocker run --platform linux/arm64 -it-v /path/on/host:/path/in/container arm64v8/ubuntu:20.04 /bin/bash
例如,将主机的
/home/user/shared
目录挂载到容器内的
/mnt/shared
目录:
sudodocker run --platform linux/arm64 -it-v /home/user/shared:/mnt/shared arm64v8/ubuntu:20.04 /bin/bash
使用 --mount 选项挂载目录
例如,将主机的 /home/user/shared 目录挂载到容器内的 /mnt/shared 目录:
sudodocker run --platform linux/arm64 -it--mounttype=bind,source=/home/user/shared,target=/mnt/shared arm64v8/ubuntu:20.04 /bin/bash
通过这些方法,可以在 Docker 容器和宿主机之间共享目录,从而方便地在两者之间交换文件。
2.4 启动&删除容器
列出当前的所有容器:
sudodockerps-a
启动指定的容器:
sudodocker start -i CONTAINER ID
或者使用容器名字
sudodocker start -i 容器名字
删除所有停止运行的容器
sudodocker container prune
删除特定容器
删除特定的容器,假设容器 ID 是 e5c2c5dabc12:
sudodockerrm e5c2c5dabc12
删除所有未使用的镜像、网络和挂载
sudodocker system prune -a
三、安装ROS1
步骤1: 更新和安装基本工具
首先,在容器中更新软件包列表并安装一些基本的工具:
apt-get update
apt-getinstall-ycurl gnupg2 lsb-release
步骤2: 添加ROS Noetic源
添加ROS源到APT源列表
sudosh-c'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
步骤3: 添加ROS密钥并安装ROS Noetic
- 1.添加 ROS 密钥:
curl-s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc |sudo apt-key add -
- 2.更新软件包索引:
apt-get update
- 3.安装桌面完整版
apt-getinstall-y ros-noetic-desktop-full
步骤4: 初始化rosdep
安装完 ROS 后,需要初始化 rosdep:
echo"source /opt/ros/noetic/setup.bash">> ~/.bashrc
source ~/.bashrc
步骤5: 测试安装
roscore
这将启动 ROS 主节点。如果能够成功启动,说明 ROS Noetic 已经安装和配置成功。
四、遇到的问题
运行指令:
docker run --rm--privileged multiarch/qemu-user-static:register --reset
Unable to find image 'multiarch/qemu-user-static:register' locally
是因为 multiarch/qemu-user-static:register 镜像未找到。我们可以先拉取这个镜像,然后再运行命令来注册 QEMU。
注意需要在注册QEMU之前,先运行这个指令:
sudodocker pull multiarch/qemu-user-static
版权归原作者 蒙蒂锅巴 所有, 如有侵权,请联系我们删除。