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

文章目录

  • [1. 设置ubuntu为清华源](#1. 设置ubuntu为清华源)
    • [1.1 备份源文件](#1.1 备份源文件)
    • [1.2 替换清华源](#1.2 替换清华源)
    • [1.3 更新清华源](#1.3 更新清华源)
  • [2. Ubuntu Docker 安装](#2. Ubuntu Docker 安装)
  • [3. 安装qemu](#3. 安装qemu)
  • [4. 安装Nvidia TX2 Docker镜像](#4. 安装Nvidia TX2 Docker镜像)
  • [5. 如何使用TX2容器](#5. 如何使用TX2容器)
  • [6. 参考资料](#6. 参考资料)

1. 设置ubuntu为清华源

为了后面ubuntu下载安装软件快些,需要使用国内的源,比如清华源。

(备注:已经更新过或者不太关心下载速度可以跳过此步)

1.1 备份源文件

  • 进入到源文件sources.list目录:

    shell 复制代码
    cd  /etc/apt/

    目录展示如下:

  • source.list备份到source.list.bak,为了防止修改失误,万一出现问题可以使用备份文件source.list.bak进行还原。

    shell 复制代码
    sudo  cp sources.list sources.list.bak

    输入命令后的效果如下:

1.2 替换清华源

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

使用vim打开源文件,删除原来所有的内容,然后将网站上的内容复制粘贴到源文件:

shell 复制代码
sudo vim sources.list

效果如下:

然后保存退出。

1.3 更新清华源

更新系统源命令如下:

shell 复制代码
sudo apt-get update

更新过程中出现了错误如下:

这里需要安装/更新证书ca-certificates,命令如下:

shell 复制代码
sudo apt-get install --reinstall ca-certificates

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

shell 复制代码
sudo apt-get update

没有任何错误,更新成功。效果如下:

2. Ubuntu Docker 安装

  1. 安装 apt 依赖包,用于通过HTTPS来获取仓库:

    shell 复制代码
    sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
  2. 添加 Docker 的官方 GPG 密钥:

    shell 复制代码
    curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
  3. 添加Docker软件源,执行以下命令来添加Docker的软件源:

    shell 复制代码
    sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
  4. 更新 apt 包索引:

    shell 复制代码
    sudo apt-get update
  5. 安装最新版本的 Docker Engine-Community 和 containerd

    shell 复制代码
    sudo apt-get install docker-ce docker-ce-cli containerd.io
  6. 测试 Docker 是否安装成功,输入以下指令,打印出以下信息则安装成功:

    shell 复制代码
    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

    shell 复制代码
    sudo apt-get install qemu
  2. 下载qemu-aarch64-static

    shell 复制代码
    wget https://github.com/multiarch/qemu-user-static/releases/download/v5.1.0-5/qemu-aarch64-static.tar.gz

    (备注:无法下载就使用windows浏览器直接下载)

  3. 解压

    shell 复制代码
    tar xzvf qemu-aarch64-static.tar.gz
  4. 配置可执行文件路径

    shell 复制代码
    sudo cp qemu-aarch64-static /usr/bin/
    sudo chmod +x /usr/bin/qemu-aarch64-static
  5. 注册qemu-user-static虚拟机

    shell 复制代码
    sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

    运行效果如下:

4. 安装Nvidia TX2 Docker镜像

  1. 安装TX2镜像

    shell 复制代码
    sudo docker pull nvcr.io/nvidia/l4t-base:r32.5.0

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

    运行效果如下:

  2. 创建并启动TX2容器

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

    成功创建容器并且进入的效果如下:

  3. 退出终端,直接输入exit

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

    shell 复制代码
    sudo docker ps -a

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

  5. 停止不使用的容器

    首先查看哪些容器正在运行,命令如下:

    shell 复制代码
    sudo docker ps

    可以看到容器4ee9b494d6b8正在运行,如下:

    然后将这个容器停止运行:

    shell 复制代码
    sudo docker stop 4ee9b494d6b8

    执行后的效果如下:

5. 如何使用TX2容器

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

  1. 启动qemu

    shell 复制代码
    sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
  2. 使用 docker start 启动一个已停止的容器,4ee9b494d6b8为前面创建的TX2容器

    shell 复制代码
    sudo docker start 4ee9b494d6b8
  3. 进入docker容器

    shell 复制代码
    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
相关推荐
明京1 小时前
常见文件系统格式有哪些
windows
masx2001 小时前
minio web console已死,Web管理功能全砍!使用 OpenMaxIO 恢复 MinIO 社区版的 Web 控制台功能!
docker·容器
TeleostNaCl1 小时前
一种使用 PowerToys 的键盘管理器工具重新映射按键实现在 Windows 上快捷输入字符的方式
windows·经验分享
春马与夏1 小时前
Windows桌面图标修复
windows
爱学语言的人2 小时前
Docker快速构建并启动Springboot程序,快速发布和上线/
spring boot·docker·容器
大千AI助手2 小时前
5分钟玩转Swagger UI:Docker部署+静态化实战
ui·docker·容器·swagger·swaggerui
江湖有缘2 小时前
【Docker管理工具】安装容器管理工具Oxker
运维·docker·容器
昌sit!2 小时前
K8S多维度问题排查
云原生·容器·kubernetes
早起鸟儿2 小时前
docker-自动启动java 包
java·linux·运维·docker
kylin-运维2 小时前
k8s使用自建nfs做持久化无法控制磁盘使用大小问题处理
云原生·容器·kubernetes