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

2023-09-14 16:56:49

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
更多推荐

HTML5 游戏开发实战 | 黑白棋

黑白棋,又叫反棋(Reversi)、奥赛罗棋(Othello)、苹果棋、翻转棋。黑白棋在西方和日本很流行。游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来判断胜负。黑白棋的棋盘是一个有8×8方格的棋盘。开始时在棋盘正中有两白两黑四个棋子交叉放置,黑棋总是先下子。(1)下子规则。把自己颜色的棋子放在棋盘的空格上,而当

Docker基础入门:Docker基础总结篇--超详细

Docker基础入门:Docker基础总结篇[docker3要素、docker安装配置、容器使用、镜像管理发布]一、Docker3要素1.1、镜像(Image)1.2、容器(Container)1.3、仓库(Registry)1.4、总结二、Docker安装配置2.1、卸载旧版Docker2.2、需要的安装包依赖2.3

【容器】docker基础使用

文章目录一、docker常见命令二、注意事项Reference一、docker常见命令docker是一个容器化平台。Docker介绍:(官网:https://www.docker.com/get-started)Docker是一个开源的应用容器引擎,你可以把它当作一个轻量级的虚拟机。它可以让开发者打包他们的应用以及依赖

Learn Prompt-基础用法

基本法则​相比于搜索引擎,ChatGPT的优势在于其高效的想法关联和信息归纳能力。在进一步讲解提示的构建思路前,我希望你可以了解到两点通用的经验法则,用来提高生成AI模型的输出质量。其中包括尝试提示的多种表述以获得最佳结果使用清晰简短的提示,避免不必要的词语减少不精确的描述当然,这并不是所有的经验法则。我们希望的是,你

Qt浏览器模块的几点说明

Qt5.6以前用的是webkit,Qt5.6版本以后分两种情况,一种是mingw编译器(windows系统)对应的Qt库不再提供浏览器模块。Qt5.6以后的版本在linux系统和mac等系统,都不存在没有浏览器控件的情况,都使用的是webengine。仅仅是windows上的mingw编译器的Qt版本没有,其他系统其实

【线性回归、岭回归、Lasso回归分别预测患者糖尿病病情】数据挖掘实验一

Ⅰ、项目任务要求任务描述:将“diabetes”糖尿病患者数据集划分为训练集和测试集,利用训练集分别结合线性回归、岭回归、Lasso回归建立预测模型,再利用测试集来预测糖尿病患者病情并验证预测模型的拟合能力。具体任务要求如下:搜集并加载“diabetes”患者糖尿病指数数据集。定义训练集和测试集(训练集和测试集比例分别

并发编程系列-AQS

AbstractQueuedSynchronizer(AQS)是一个抽象队列同步器,它用于构建依赖于先进先出(FIFO)等待队列的阻塞锁和相关同步器的框架。该类的目的在于提供基本功能的封装,适用于大多数需要使用单个原子int值表示同步状态的同步器。举例来说,ReentrantLock、Semaphore以及Future

《计算机视觉中的多视图几何》笔记(3)

3ProjectiveGeometryandTransformationsof3D这章主要讲的是3D的射影几何,与2D的射影几何差不多。主要区别是:3D射影几何对偶的是点和平面,直线是自对偶的。3D空间中直线有4个自由度,这一现象并不是那么容易直接得出。一种方法是把直线用正交平面两个交点表示。文章目录3Projecti

【Rust 基础篇】Rust 父trait:扩展和组织trait的继承体系

导言Rust是一种以安全性和高效性著称的系统级编程语言,其设计哲学是在不损失性能的前提下,保障代码的内存安全和线程安全。在Rust中,trait是一种用于抽象类型行为的机制。有时候,我们需要在一个trait的基础上扩展更多的行为,或者将多个trait组合起来形成一个更大的trait继承体系。这时,Rust的父trait

vue3 - 前端 Vue 项目提交GitHub 使用Actions自动化部署

GitHubDemo地址在线预览参考文章使用GithubActions发布Vue网站到GithubPage使用GithubActions将Vue项目部署到GithubPages前端使用githubpages部署自己的网站GitHubActions自动化部署前端项目指南前言vue前端项目写好之后,想部署到线上通过在线地址

助力经销商打赢旺季攻坚战,全兴在全国范围内拉开“兴风暴”

执笔|姜姜编辑|萧萧中秋、国庆历来是白酒消费的旺季,也是完成当年任务的关键期,尤其今年“双节”合一,各大食品饮料企业都憋足了劲,白酒促销大戏也轮番上演。作为中国“老八大名酒”之一的全兴酒业谋定而动,以积极奔跑的姿态,不断精耕重点区域地级市场,紧抓双节动销,助力渠道伙伴在白酒旺销季打一场大胜仗。对话金牌酒商,老名酒筑牢大

热文推荐