【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. 参考资料

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/109233.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Redis】深入探索 Redis 的数据类型 —— 列表 List

文章目录 一、List 类型介绍二、List 类型相关命令2.1 LPUSH 和 RPUSH、LPUSHX 和 RPUSHX2.2 LPOP 和 RPOP、BLPOP 和 BRPOP2.3 LRANGE、LINDEX、LINSERT、LLEN2.4 列表相关命令总结 三、List 类型内部编码3.1 压缩列表(ziplist)3.2 链表(lin…

助力涵洞场景安全智能巡检,基于yolov7/yolov7x/yolov7e6e开发构建基体建筑缺陷问题检测识别系统

涵洞场景下的安全智能化巡检对于保障设施的正常运行有着重要的意义,在道路、公路、隧道、桥梁等场景下我们都已有实际的项目实践开发,而基于涵洞场景下的数据还未有过尝试,本文的核心目的就是想要构建基于涵洞场景下的智能化目标检测识别系统…

【Vue】大悟!模板语法-插值语法指令语法

模板语法 Vue模板语法包括两大类 插值语法 插值语法也就是两个大括号,也叫Mustache 功能:用于解析标签体内容,可以进行运算、三元表达式等,将最终解析出来的内容插入到标签中 写法:{{xxx}},xxx 是 js 表达式&…

OPENCV--Haar+Tesseract车牌识别;

车牌识别步骤 说明:Haar级联器仅用于定位车牌的位置,Tesseract用于提取其中的内容; 实现步骤: 1、Haar级联器定位车牌位置; 2、车牌预处理操作(二值化、形态学、滤波去噪、缩放); 3、调用Tesseract进行文字识别; 注意:这里需要预先安装Tesseract; # -*- cod…

腾讯云4核8G服务器CVM S5性能测评(CPU/流量/系统盘)

腾讯云4核8G服务器CVM标准型S5实例性能测评,包括CPU型号、内存、系统盘、CVM实例规格性能测评,腾讯云4核8G租用优惠价格表,腾讯云服务器网分享腾讯云4核8G服务器CVM S5性能测评和租用费用: 目录 腾讯云4核8G服务器CVM S5性能测评…

【Vue】vue2使用pdfjs预览pdf文件,在线预览方式一,pdfjs文件包打开新窗口预览pdf文件

系列文章目录 【Vue】vue2预览显示quill富文本内容,vue-quill-editor回显页面,v-html回显富文本内容 【Vue】vue2项目使用swiper轮播图2023年8月21日实战保姆级教程 【Vue】vue2使用pdfjs预览pdf文件,在线预览方式一,pdfjs文件包…

openGauss学习笔记-69 openGauss 数据库管理-创建和管理普通表-更新表中数据

文章目录 openGauss学习笔记-69 openGauss 数据库管理-创建和管理普通表-更新表中数据 openGauss学习笔记-69 openGauss 数据库管理-创建和管理普通表-更新表中数据 修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行、所有行或者指定的部分行。还可以独立更新…

Java基础语法之数组

💕十年生死两茫茫,不思量,自难忘💕 作者:Mylvzi 文章主要内容:Java学习之--数组 一.数组的基本概念 1.定义 数组是相同数据类型的集合!使用数组来存放多个相同类型的数据! 2.Jav…

【JAVA】String类

作者主页:paper jie_的博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JAVASE语法系列》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和…

c++ 中的函数指针

以下图片演示了c中函数指针的用法。如下图可见,把函数地址赋值给函数指针,用函数名或者函数名的地址,都可以,c编译器不报错。即 ptr f 和 ptr &f 都对。但准确的话,函数名就是地址,在编译时候&#x…

学Python的漫画漫步进阶 -- 第二步

学Python的漫画漫步进阶 -- 第二步 二、编程基础那点事2.1 标识符2.2 关键字2.3 变量2.4 语句2.5 代码注释2.6 模块2.7 动动手——实现两个模块间的代码元素访问2.8 练一练2.9 标识符的总结全部16步完成后 ,后续就是介绍项目实战,请大家给予点赞、关注&a…

9.14 C++作业

仿照vector手动实现自己的myVector&#xff0c;最主要实现二倍扩容功能 #include <iostream>using namespace std;template <typename T> class Myvector {T *data; //存储数据的数组int len; //当前数组的长度int mycapa; //容纳数据的总容量public://…