【Docker】ubuntu20.04 X86机器搭建NVIDIA ARM64 TX2的Docker镜像

2023-11-10

1. 设置ubuntu为清华源

为了后面ubuntu下载安装软件快些,需要使用国内的源,比如清华源。
(备注:已经更新过或者不太关心下载速度可以跳过此步)

1.1 备份源文件

  • 进入到源文件sources.list目录:
    cd  /etc/apt/
    
    目录展示如下:
    在这里插入图片描述
  • source.list备份到source.list.bak,为了防止修改失误,万一出现问题可以使用备份文件source.list.bak进行还原。
    sudo  cp sources.list sources.list.bak
    
    输入命令后的效果如下:
    在这里插入图片描述

1.2 替换清华源

打开清华源官网,选择自己使用的ubuntu的版本,例如:Ubuntu 20.04
https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/

在这里插入图片描述
使用vim打开源文件,删除原来所有的内容,然后将网站上的内容复制粘贴到源文件:

sudo vim sources.list

效果如下:
在这里插入图片描述
然后保存退出。

1.3 更新清华源

更新系统源命令如下:

sudo apt-get update

更新过程中出现了错误如下:
在这里插入图片描述
这里需要安装/更新证书ca-certificates,命令如下:

sudo apt-get install --reinstall ca-certificates

证书更新成功后,再次更新源:

sudo apt-get update

没有任何错误,更新成功。效果如下:
在这里插入图片描述

2. Ubuntu Docker 安装

  1. 安装 apt 依赖包,用于通过HTTPS来获取仓库:
    sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
    
  2. 添加 Docker 的官方 GPG 密钥:
    curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    
  3. 添加Docker软件源,执行以下命令来添加Docker的软件源:
    sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
    
  4. 更新 apt 包索引:
    sudo apt-get update
    
  5. 安装最新版本的 Docker Engine-Community 和 containerd
    sudo apt-get install docker-ce docker-ce-cli containerd.io
    
  6. 测试 Docker 是否安装成功,输入以下指令,打印出以下信息则安装成功:
    sudo docker run hello-world
    
    打印出以下信息则安装成功:
    在这里插入图片描述

3. 安装qemu

因为需要在X86架构机器模拟ARM架构来编译,这里需要用到qemu-user-staticqemu-user-static是一个用于利用当前操作系统来运行其它架构的一个仿真器,可以通过x86的机器编译出其它各个架构的docker镜像。

qemu-user-static项目的github地址:
https://github.com/multiarch/qemu-user-static

  1. ubuntu安装qemu
    sudo apt-get install qemu
    
  2. 下载qemu-aarch64-static
    wget https://github.com/multiarch/qemu-user-static/releases/download/v5.1.0-5/qemu-aarch64-static.tar.gz
    
    (备注:无法下载就使用windows浏览器直接下载)
  3. 解压
    tar xzvf qemu-aarch64-static.tar.gz
    
  4. 配置可执行文件路径
    sudo cp qemu-aarch64-static /usr/bin/
    sudo chmod +x /usr/bin/qemu-aarch64-static
    
  5. 注册qemu-user-static虚拟机
    sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
    
    运行效果如下:
    在这里插入图片描述

4. 安装Nvidia TX2 Docker镜像

  1. 安装TX2镜像

    sudo docker pull nvcr.io/nvidia/l4t-base:r32.5.0
    

    因为TX2实际的板子使用的版本为r32.5.0,所以这里的镜像保持一直都使用r32.5.0版本。

    运行效果如下:
    在这里插入图片描述

  2. 创建并启动TX2容器

    sudo docker run --name=TX2_Base --platform linux/arm64 -it nvcr.io/nvidia/l4t-base:r32.5.0 /bin/bash
    

    成功创建容器并且进入的效果如下:
    在这里插入图片描述

  3. 退出终端,直接输入exit
    在这里插入图片描述

  4. 查看所有的容器命令如下:

    sudo docker ps -a
    

    通过查询命令可以看到刚刚被成功创建的TX2的容器,并且容器的ID为4ee9b494d6b8,下次启动就可以直接通过容器ID来启动。
    在这里插入图片描述

  5. 停止不使用的容器
    首先查看哪些容器正在运行,命令如下:

    sudo docker ps
    

    可以看到容器4ee9b494d6b8正在运行,如下:
    在这里插入图片描述
    然后将这个容器停止运行:

    sudo docker stop 4ee9b494d6b8
    

    执行后的效果如下:
    在这里插入图片描述

5. 如何使用TX2容器

每次当ubuntu系统重新启动之后,我们都需要重新启动一下qemu。执行如下步骤来启动前面创建的TX2容器,具体如下:

  1. 启动qemu
    sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
    
  2. 使用 docker start 启动一个已停止的容器,4ee9b494d6b8为前面创建的TX2容器
    sudo docker start 4ee9b494d6b8
    
  3. 进入docker容器
    sudo docker exec -it 4ee9b494d6b8 /bin/bash
    
    进入的效果如下:
    在这里插入图片描述

6. 参考资料

  1. NVIDIA L4T Base官网资料
    https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-base
  2. 利用x86机器编译支持arm架构的docker镜像
    https://blog.csdn.net/ccgshigao/article/details/109631585
  3. Docker的使用
    https://www.runoob.com/docker/ubuntu-docker-install.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Docker】ubuntu20.04 X86机器搭建NVIDIA ARM64 TX2的Docker镜像 的相关文章

  • 无法在 Windows 7 上安装 Android USB 驱动程序

    所以我想使用我的新 Nexus 5 来调试我的应用程序 我尝试通过以下方式安装 Android USB 驱动程序装置经理 http developer android com tools extras oem usb html Win7但我
  • Consul 未取消注册僵尸服务

    我正在使用 marathon 部署一个简单的 hello world nginx 容器 一切似乎都运行良好 除了我有 6 个容器不会从 consul 注销 docker ps显示没有容器正在运行 我尝试使用 v1 catalog dereg
  • Windows docker:权限被拒绝 /var/run/docker.sock

    当我尝试使用自动发现运行 filebeat 时 出现以下错误 退出 自动发现提供程序设置中出现错误 已获得权限 尝试连接到 Docker 守护程序套接字时被拒绝 unix var run docker sock 获取http 2Fvar 2
  • 无法解析 docker 容器之间的主机名

    我在单独的撰写文件中创建了两个容器 用于应用程序隔离 每个应用程序可能在撰写文件中定义了多个容器 例如后备数据库 这些容器通过名为 common 的外部网络链接 一个示例撰写文件是 version 2 services rabbitmq i
  • Windows Docker 在 hcssshim::System::CreateProcess 期间遇到错误:Windows 系统调用失败:系统找不到指定的文件

    我对 Docker 相当陌生 并尝试构建 Windows 容器 但当我运行它时遇到了这个问题 任何帮助 将不胜感激 base D src WebIntelligence bling blingDemo Models gt docker ru
  • 无法启动 Windows 快捷方式

    我正在尝试使用 python 启动 Windows 我已经尝试了 os system subprocess call os startfile 等多种方法 但总是收到错误消息 指出路径不存在 我知道路径是正确的 因为我尝试在 CMD EXE
  • Docker CentOS systemctl 不允许

    我尝试使用 systemctl 命令构建 CentOS 映像 但每次当我建造它时 我收到此错误 Step 5 7 RUN systemctl enable syslog ng systemctl start syslog ng gt Run
  • 原子的 C++ 内存屏障

    在这方面我是个新手 谁能提供以下内存屏障之间差异的简化解释 窗户MemoryBarrier 围栏 mm mfence 内联汇编asm volatile memory 内在的 ReadWriteBarrier 如果没有简单的解释 一些好文章或
  • 无法在 Powershell 中运行 R.exe

    我经常发现在命令行 Windows 上运行 R 更有用 然而 当我在 Powershell 中尝试时 我往往会遇到问题 但这可以通过第一次运行轻松克服cmd然后就可以了 这是我执行此操作时遇到的错误R CMD BATCH Invoke Hi
  • 有关 CredEnumerate 的帮助

    作为后续this https stackoverflow com questions 199518 how to programatically add mapped network passwords winxp我希望有人可以帮助解决这个
  • GetEventLogs() 返回没有设置事件日志?

    采取以下 C 代码 EventLog eventLogs eventLogs EventLog GetEventLogs computername foreach EventLog evt in eventLogs statusMessag
  • 将 SWI Prolog 代码编译为 Windows 可执行文件 - 解析器 Grails3 项目

    我正在尝试构建解析器 Grails3 项目https github com RichardMoot Grail https github com RichardMoot Grail谁的教程是http www labri fr perso m
  • 获取Windows下新线程/删除线程的通知

    创建 DLL 时 您可以在 DllMain 函数 DLL THREAD ATTACH DLL THREAD DETACH 中获取有关新线程 退出线程的通知 有没有办法在 非托管 可执行文件中从 Windows 获取这些或等效通知 是的 在您
  • 如何使用批处理文件创建 EXE 可执行文件? [复制]

    这个问题在这里已经有答案了 我希望能够简单地运行 Windows 批处理文件并让它创建 exe 可执行文件 我知道您可以使用以下脚本批量创建文件 echo off echo This will be in a text file gt gt
  • Docker、maven 和 settings.xml

    给出以下简单的 Dockerfile FROM maven 3 6 3 ibmjava 8 alpine Copy maven settings COPY settings xml usr share maven ref COPY pom
  • Eclipse 安装程序内部错误:注册表目录不可用

    我曾经像平常一样使用 Oomph Eclipse 安装程序 直到我更改了注册表中的用户配置文件 以删除烦人的空格 从那时起 除了 eclipse 安装程序之外 我没有遇到任何问题 它不断尝试在旧用户文件夹中查找注册表目录 该文件夹已不存在
  • 使用前端 Dockerfile 无法解决

    我对 Docker 还很陌生 正在尝试使用纯 HTML 构建 Docker 映像 但我收到此错误消息 无法使用前端 dockerfile v0 解决 无法读取 dockerfile 打开 var lib docker tmp buildki
  • 如何构建一个不链接到 musl libc 的 go 可执行文件

    So 官方的 Go 构建容器基于 Alpine 高山用途musl https www musl libc org 作为 libc 而不是 glibc 我需要在容器中构建一个可以在使用 glibc 的 Ubuntu 上运行的 Go 可执行文件
  • Docker 不遵循构建目录中的符号链接

    我正在对一个应用程序进行 Docker 化 其中涉及通过 Clang 将二进制文件与其他 C 文件链接 我们维护二进制文件的符号链接版本 因为它们在整个代码库中使用 我的 Docker 构建目录包含整个代码库 包括源文件以及这些源文件的符号
  • 验证域用户凭据

    我需要一种方法来验证 Windows 上本机 C 的用户 密码对 输入的是用户名和密码 用户可以是 DOMAIN user 格式 基本上我需要编写一个函数 如果用户 密码是有效的本地帐户 则返回 true 第1部分 如果用户 密码在给定的域

随机推荐

  • 玩客云armbian刷机教程

    文章作者 GoodBoyboy 文章链接 https blog goodboyboy top posts 3292274545 html 版权声明 本博客所有文章除特别声明外 均采用 CC BY NC SA 4 0 许可协议 转载请注明来自
  • 【机器学习实战】4、基于概率论的分类方法:朴素贝叶斯

    文章目录 4 1 基于贝叶斯决策理论的分类方法 4 1 1 贝叶斯决策理论 4 1 2 条件概率 4 1 3 全概率公式 4 1 4 贝叶斯推断 4 1 5 朴素贝叶斯 4 2 使用朴素贝叶斯进行文档分类 4 3 总结 4 4 朴素贝叶斯改
  • QT+VS2019 环境搭建

    一 概述 一个PC QT 的跨平台项目要维护 需要搭建一套环境 使用的是QT VS2019的环境 QT使用v5 9 3的版本 这个版本qalgorithms h文件要替换成新的 源码附在文尾 vs插件使用qt vsaddin msvc201
  • cuda与cpu高斯列主消元求解线性方程组速度比较

    cuda与cpu高斯列主消元求解线性方程组速度比较 最近看了看cuda上面用c语言进行的编程 踩了很多的坑 在这里记录一下 完整程序已上传 https download csdn net download qq 41910473 12917
  • linux下查找是否安装了fcitx插件

    方法 在命令行输入指令 dpkg L fcitx frontend qt5 也可以查找是否有libfcitxplatforminputcontextplugin so这个库文件 在命令行输入 dpkg L fcix frontend qt5
  • 《计算机组成原理》BCD码 8421编码原理剖析

    作者主页 士别三日wyx BCD码 1 BCD码的作用 2 BCD码的转换原理 3 8421编码 3 1 8421编码的权重划分 3 2 8421编码的加法运算 3 3 8461编码的加6修正 1 BCD码的作用 首先问大家一个问题 计算机
  • 如何防止XSS攻击?

    随着互联网的高速发展 信息安全问题已经成为企业最为关注的焦点之一 而前端又是引发企业安全问题的高危据点 在移动互联网时代 前端人员除了传统的 XSS CSRF 等安全问题之外 又时常遭遇网络劫持 非法调用 Hybrid API 等新型安全问
  • 6-1 使用函数求素数和 (14 分)

    使用函数求素数和 prime p 其中函数prime当用户传入参数p为素数时返回True 否则返回False PrimeSum m n 函数PrimeSum返回区间 m n 内所有素数的和 题目保证用户传入的参数1 lt m
  • css实现气泡对话框

    实现气泡聊天框 我介绍两个方法 第一种 利用旋转 首先设置一个小正方形利用transform属性将其旋转45度 当我们把一个长方形方框和旋转后的小正方形置于一起就可以都得到理想效果 效果图如下 如上图所示 露出来的三角只是小正方形的一角 代
  • Node.js express项目生成器

    使用流程 1 在任意目录打开终端 输入指令 cnpm i express generator g 全局安装 express项目生成器 1 1查看模块安装的路径 输入指令 npm config ls C Users 12015 AppData
  • Java微信APP支付-支付结果通知

    上一章讲了微信APP支付统一下单接口的开发 这一章我们讲支付结果通知接口的开发 这一接口是微信异步调用我们的接口 告之我们支付已经成功了 然后我们补录门店 电商订单 更新APP订单支付信息等业务逻辑 官方的API地址 https pay w
  • linux内核中socket读取和接收的缓冲区大小

    linux内核中socket读取和接收的缓冲区大小 1 socket内核缓冲区大小可用getsockopt获取 2 socket内核缓冲区大小可用setsockopt设置 缓冲区的大小为设置的值的2倍 具体设置代码入下 3 socket缓冲
  • 整数奇偶排序

    整数奇偶排序 问题描述 蒜术师给了你一个 10 个整数的序列 要求对其重新排序 排序要求 奇数在前 偶数在后 奇数按从大到小排序 偶数按从小到大排序 输入格式 输入一行 包含 10 10 个整数 彼此以一个空格分开 每个整数的范围是大于等于
  • Linux入坑教程

    服务器安装所需环境 Linux 一 安装基础环境 1 1 JDK 1 2 Mysql 1 3 FastDFS 1 4 Redis 1 5 GIT 1 6 Node 二 Basic commands 基础命令 2 1 查询命令 2 1 1 查
  • 僵尸进程~

    僵尸进程 1 僵尸进程概述 什么是僵尸进程 在Linux系统中 任何一个子进程在调用exit 函数结束运行后 内核会释放该进程的所有资源 包括占用的内存和打开的文件等 同时 也会留下一个叫做僵尸进程 Zombie 的数据结构 Zombie中
  • HIDL详解-Android10.0 HwBinder通信原理(二)

    Android取经之路 的源码都基于Android Q 10 0 进行分析 Android取经之路 系列文章 系统启动篇 Android系统架构Android是怎么启动的Android 10 0系统启动之init进程Android10 0系
  • sentinel搭建与使用

    下载 https github com alibaba Sentinel releases 启动 脚本 java jar Dserver port 9013 Dsentinel dashboard auth username sentine
  • ERROR in ./src/main.jsModule build failed (from ./node_modules/babel-loader/lib/index.js):Error: e

    ERROR in src main js Module build failed from node modules babel loader lib index js Error error 0308010C digital envelo
  • mysql数据库连接

    一 自带的客户端命令行 直接输入密码即可连接 二 使用口令连接 1 切换目录 输入cd C web mysql 8 0 11 winx64 bin 2 登录 输入mysql u root p 3 输入密码 root 数据库密码 连接成功
  • 【Docker】ubuntu20.04 X86机器搭建NVIDIA ARM64 TX2的Docker镜像

    文章目录 1 设置ubuntu为清华源 1 1 备份源文件 1 2 替换清华源 1 3 更新清华源 2 Ubuntu Docker 安装 3 安装qemu 4 安装Nvidia TX2 Docker镜像 5 如何使用TX2容器 6 参考资料