当前位置: 首页 > news >正文

在x86/amd64的机器上使用Docker运行arm64v8/ubuntu并安装ROS1

一、准备工作

主要是因为国内网络的问题,可能导致镜像拉取失败,解决办法参考:镜像加速

二、安装运行过程

2.1拉取镜像:

sudo docker pull arm64v8/ubuntu:20.04

这个是ubuntu的拉取指令,其他的也是类似。

2.2 运行镜像

为了在 AMD64 主机上运行 ARM64 容器,你需要安装 QEMU 并注册 binfmt 支持。以下是详细步骤:

安装 QEMU

安装 QEMU 用户模式仿真器:
sudo apt-get update
sudo apt-get install -y qemu-user-static
注册 binfmt:

Docker 提供了一个方便的镜像来注册 binfmt,可以使用以下命令:

docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
验证 QEMU 是否正确安装

你可以使用以下命令来验证:

docker run --rm --privileged multiarch/qemu-user-static:register --reset
运行 ARM64 容器

在安装和注册 QEMU 之后,你应该可以在 AMD64 主机上运行 ARM64 容器:

sudo docker run --platform linux/arm64 -it arm64v8/ubuntu:20.04

2.3 宿主机目录共享

在 Docker 中,可以通过挂载主机目录到容器内的方式实现目录共享。这通常是通过 -v 或 --mount 选项来实现的。以下是具体的步骤和示例:

使用 -v 选项挂载目录

-v 选项用于挂载主机目录到容器内的目录。格式为:-v 主机目录:容器目录。

sudo docker run --platform linux/arm64 -it -v /path/on/host:/path/in/container arm64v8/ubuntu:20.04 /bin/bash

例如,将主机的 /home/user/shared 目录挂载到容器内的/mnt/shared目录:

sudo docker run --platform linux/arm64 -it -v /home/user/shared:/mnt/shared arm64v8/ubuntu:20.04 /bin/bash

使用 --mount 选项挂载目录

例如,将主机的 /home/user/shared 目录挂载到容器内的 /mnt/shared 目录:

sudo docker run --platform linux/arm64 -it --mount type=bind,source=/home/user/shared,target=/mnt/shared arm64v8/ubuntu:20.04 /bin/bash

通过这些方法,可以在 Docker 容器和宿主机之间共享目录,从而方便地在两者之间交换文件。

2.4 启动&删除容器

列出当前的所有容器:

sudo docker ps -a

启动指定的容器:

sudo docker start -i CONTAINER ID

或者使用容器名字

sudo docker start -i 容器名字

删除所有停止运行的容器

sudo docker container prune

删除特定容器

删除特定的容器,假设容器 ID 是 e5c2c5dabc12:

sudo docker rm e5c2c5dabc12

删除所有未使用的镜像、网络和挂载

sudo docker system prune -a

三、安装ROS1

步骤1: 更新和安装基本工具

首先,在容器中更新软件包列表并安装一些基本的工具:

apt-get update
apt-get install -y curl gnupg2 lsb-release

步骤2: 添加ROS Noetic源

添加ROS源到APT源列表

sudo sh -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-get install -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之前,先运行这个指令:

sudo docker pull multiarch/qemu-user-static

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Unity游戏帧率查看软件Fraps
  • taoCMS v3.0.2 任意文件读取漏洞(CVE-2022-23316)
  • 绝区贰--及时优化降低 LLM 成本和延迟
  • 计算机网络面试常见题目(一)
  • vue3使用pinia中的actions,需要调用接口的话
  • 第三十章 方法大全(Python)
  • SpringBoot | 大新闻项目后端(redis优化登录)
  • 第三方商城对接重构(HF202407)
  • 【第20章】MyBatis-Plus逻辑删除支持
  • Linux查看文件的行数,字数,字节数
  • 207 课程表
  • 如何在PD虚拟机中开启系统的嵌套虚拟化功能?pd虚拟机怎么用 Parallels Desktop 19 for Mac
  • Pytorch(笔记7损失函数类型)
  • 1-5题查询 - 高频 SQL 50 题基础版
  • Floyd
  • JavaScript-如何实现克隆(clone)函数
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • 230. Kth Smallest Element in a BST
  • CentOS 7 防火墙操作
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • Hibernate【inverse和cascade属性】知识要点
  • HomeBrew常规使用教程
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Java基本数据类型之Number
  • Java-详解HashMap
  • leetcode98. Validate Binary Search Tree
  • mongodb--安装和初步使用教程
  • Node + FFmpeg 实现Canvas动画导出视频
  • OSS Web直传 (文件图片)
  • PAT A1092
  • Python爬虫--- 1.3 BS4库的解析器
  • Sequelize 中文文档 v4 - Getting started - 入门
  • ubuntu 下nginx安装 并支持https协议
  • 每天10道Java面试题,跟我走,offer有!
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​io --- 处理流的核心工具​
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​zookeeper集群配置与启动
  • ​学习笔记——动态路由——IS-IS中间系统到中间系统(报文/TLV)​
  • #宝哥教你#查看jquery绑定的事件函数
  • $.ajax中的eval及dataType
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (003)SlickEdit Unity的补全
  • (补充)IDEA项目结构
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (六)软件测试分工
  • (论文阅读30/100)Convolutional Pose Machines
  • (南京观海微电子)——I3C协议介绍
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (转) 深度模型优化性能 调参
  • (转)Scala的“=”符号简介