在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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/40565.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/40565.shtml
英文地址,請注明出處:http://en.pswp.cn/web/40565.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【DevOps】運維過程中經常遇到的Http錯誤碼問題分析(一)

一、解決HTTP 408錯誤:上傳3M文件時請求超時的問題 在開發Web應用程序時,遇到HTTP 408狀態碼(請求超時)是常見的問題。特別是在上傳大文件時,這種情況更容易發生。本文將探討在上傳一個3M文件時,Web服務器…

LeetCode題練習與總結:排序鏈表--148

一、題目描述 給你鏈表的頭結點 head ,請將其按 升序 排列并返回 排序后的鏈表 。 示例 1: 輸入:head [4,2,1,3] 輸出:[1,2,3,4]示例 2: 輸入:head [-1,5,3,4,0] 輸出:[-1,0,3,4,5]示例 3&am…

封鎖-封鎖模式(共享鎖、排他鎖)、封鎖協議(兩階段封鎖協議)

一、引言 1、封鎖技術是目前大多數商用DBMS采用的并發控制技術,封鎖技術通過在數據庫對象上維護鎖來實現并發事務非串行調度的沖突可串行化 2、基于鎖的并發控制的基本思想是: 當一個事務對需要訪問的數據庫對象,例如關系、元組等進行操作…

【嵌入式開發 Linux 常用命令系列 1.6 -- grep 過濾指定的目錄】

請閱讀【嵌入式開發學習必備專欄 】 文章目錄 grep 過濾指定目錄 grep 過濾指定目錄 在Linux中使用grep搜索字符串并希望排除特定目錄時,可以使用--exclude-dir參數。這個參數允許你指定一個或多個目錄名稱來排除它們的內容不被grep搜索。這對于忽略一些常見的臨時…

LLM - 詞向量 Word2vec

1. 詞向量是一個詞的低維表示,詞向量可以反應語言的一些規律,詞意相近的詞向量之間近乎于平行。 2. 詞向量的實現: (1)首先使用滑動窗口來構造數據,一個滑動窗口是指在一段文本中連續出現的幾個單詞&#x…

llamaindex實戰-使用本地大模型和數據庫對話

概述 本文使用NLSQLTableQueryEngine 查詢引擎來構建SQL的自然語言處理查詢。 請注意,我們需要指定要與該查詢引擎一起使用的表。如果我們不這樣做,查詢引擎將提取所有架構上下文,這可能會溢出 LLM 的上下文窗口。 在以下情況都可以使用NL…

如何用Java寫一個整理Java方法調用關系網絡的程序

大家好,我是猿碼叔叔,一位 Java 語言工作者,也是一位算法學習剛入門的小學生。很久沒有為大家帶來干貨了。 最近遇到了一個問題,大致是這樣的:如果給你一個 java 方法,如何找到有哪些菜單在使用。我的第一想…

線程中如何有效避免死鎖問題

1. 理解死鎖形成的原因 互斥條件:一個資源每次只能被一個線程使用。 請求與保持條件:線程因請求資源而阻塞時,對已獲得的資源保持不放。 不剝奪條件:線程已獲得的資源,在末使用完之前,不能強行剝奪。 循環…

c++ primer plus 第15章友,異常和其他:15.1.3 其他友元關系

c primer plus 第15章友,異常和其他:15.1.3 其他友元關系 提示:這里可以添加系列文章的所有文章的目錄,目錄需要自己手動添加 15.1.3 其他友元關系 提示:寫完文章后,目錄可以自動生成,如何生成可…

整潔架構SOLID-單一職責原則(SRP)

文章目錄 定義案例分析重復的假象代碼合并解決方案 小結 定義 SRP是SOLID五大設計原則中最容易被誤解的一個。也許是名字的原因,很多程序員根據SRP這個名字想當然地認為這個原則就是指:每個模塊都應該只做一件事。 在歷史上,我們曾經這樣描…

科研繪圖系列:R語言雙側條形圖(bar Plot)

介紹 雙側條形圖上的每個條形代表一個特定的細菌屬,條形的高度表示該屬的LDA得分的對數值,顏色用來區分不同的分類群或組別,它具有以下優點: 可視化差異:條形圖可以直觀地展示不同細菌屬在得分上的差異。強調重要性:較高的條形表示某些特征在區分不同組別中具有重要作用…

# Sharding-JDBC從入門到精通(6)-- Sharding-JDBC 水平分庫 和 垂直分庫。

Sharding-JDBC從入門到精通&#xff08;6&#xff09;-- Sharding-JDBC 水平分庫 和 垂直分庫。 一、Sharding-JDBC 水平分庫-分片策略配置 1、分庫策略定義方式如下 # 分庫策略&#xff0c;如何將一個邏輯表映射到多個數據源 spring.shardingsphere.sharding.tables.<邏…

第33集《大乘起信論》

《大乘起信論》和尚尼慈悲&#xff0c;諸位法師、諸位居士&#xff0c;阿彌陀佛&#xff01;&#xff08;阿彌陀佛&#xff01;&#xff09;請大家打開《講義》第七十四頁&#xff0c;子二、釋觀。 本論的特色&#xff0c;一言以蔽之就是文簡意賅、辭約理富&#xff0c;就是說…

VUE2拖拽組件:vue-draggable-resizable-gorkys

vue-draggable-resizable-gorkys組件基于vue-draggable-resizable進行二次開發, 用于可調整大小和可拖動元素的組件并支持沖突檢測、元素吸附、元素對齊、輔助線 安裝: npm install --save vue-draggable-resizable-gorkys 全局引用: import Vue from vue import vdr fro…

嵌入式linux面試1

1. linux 1.1. Window系統和Linux系統的區別 linux區分大小寫windows在dos&#xff08;磁盤操作系統&#xff09;界面命令下不區分大小寫&#xff1b; 1.2. 文件格式區分 windows用擴展名區分文件&#xff1b;如.exe代表執行文件&#xff0c;.txt代表文本文件&#xff0c;.…

運用Python與Keras框架打造深度學習圖像分類應用:詳盡步驟與代碼實例解析

引言 隨著深度學習技術的飛速發展&#xff0c;其在圖像識別和分類領域的應用日益廣泛。在這一背景下&#xff0c;Python因其豐富的數據科學庫和強大的生態系統而成為首選編程語言之一。在本文中&#xff0c;我們將深入探討如何使用Python和其中的Keras深度學習框架來完成一個實…

手動將dingtalk-sdk-java jar包打入maven本地倉庫

有時候,中央鏡像庫不一定有自己需要的jar包,這時候我們就需要用到該方法,將jar打入maven本地倉庫,然后項目中,正常使用maven的引入規則。 mvn install:install-file -Dmaven.repo.local=D:\software\maven\apache-maven-3.6.3-bin\apache-maven-3.6.3\repo -DgroupId=ding…

學習筆記——交通安全分析11

目錄 前言 當天學習筆記整理 4信控交叉口交通安全分析 結束語 前言 #隨著上一輪SPSS學習完成之后&#xff0c;本人又開始了新教材《交通安全分析》的學習 #整理過程不易&#xff0c;喜歡UP就點個免費的關注趴 #本期內容接上一期10筆記 #最近確實太懶了&#xff0c;接受…

跨越數據邊界:域適應在目標檢測中的革新作用

標題&#xff1a;跨越數據邊界&#xff1a;域適應在目標檢測中的革新作用 在機器學習和計算機視覺領域&#xff0c;尤其是目標檢測任務中&#xff0c;域適應&#xff08;Domain Adaptation&#xff09;是一種關鍵技術&#xff0c;它解決了模型在不同數據分布上的泛化問題。當訓…

C語言字節對齊技術在嵌入式、網絡與操作系統中的應用與優化

第一部分&#xff1a;嵌入式系統中的字節對齊 嵌入式系統通常對性能和資源有著嚴格的要求。在這些系統中&#xff0c;字節對齊的正確使用可以顯著提高數據訪問速度&#xff0c;減少內存占用&#xff0c;并提高系統的整體效率。 一、嵌入式系統中的字節對齊挑戰 嵌入式系統中…