Docker 镜像#

下载和安装#

  1. 为你的系统下载并安装 Docker 引擎:Install Docker Engine @ Docker Documentation。Docker Engine 最低版本支持为 v20.10.6。

    对于 Linux 用户,建议你启用以非 root 用户身份管理 Docker,如 Post-installation steps for Linux @ Docker Documentation 中所述。

  2. 从下载页面,找到 sdkmanager-[version].[build#]-[base_OS]_docker.tar.gz,其中 [version][build] 代表 SDK Manager 的当前版本号和构建号。

  3. 将文件下载到你的主机。

  4. 从终端,加载 Docker 镜像

    docker load -i ./sdkmanager-[version].[build#]-[base_OS]_docker.tar.gz
    

    建议你将版本标记为 “latest” 以方便使用

    docker tag sdkmanager:[version].[build#] sdkmanager:latest
    

使用 SDK Manager Docker 镜像#

指南#

  • 此镜像仅为使用 SDK Manager CLI 模式而构建。有关更多信息,请参阅使用命令行安装

  • 刷写目标设备需要完全访问主机上的 USB 端口。

注意

当前不支持为 DRIVE Software 10.0 创建 DRIVE 镜像。

基本用法#

Docker 镜像旨在直接从主机执行,而无需在 docker 内部打开终端。sdkmanager 可执行文件是入口点。

在运行新容器时,应直接使用 SDK Manager CLI 参数

  • SDK Manager CLI

    sdkmanager --cli
    
  • 使用 Docker 的 SDK Manager CLI

    docker run -it --rm sdkmanager --cli
    

有关更多信息,请参阅使用命令行安装

其他注意事项#

  • 默认情况下,初始容器具有干净的配置文件和本地数据库。这需要考虑如何使用镜像以及何时将更改(提交)保存到新镜像中。这将取决于容器的使用计划,例如是否计划在安装后重复使用它,还是每次都从干净阶段开始。根据你是否打算为每个 SDK 版本使用不同的容器还是使用唯一的容器来调整你的计划。

  • 刷写需要特权访问并将 USB 端口映射到容器中

    --privileged -v /dev/bus/usb:/dev/bus/usb/ -v /dev:/dev -v /media/$USER:/media/nvidia:slave
    
  • 根据你的本地网络安全设置,你可能需要使用 --network host 设置对本地网络的访问。如果你想通过 L4T USB 设备模式与 Jetson 设备交互,则主要需要这样做。

  • Docker 内部的本地用户是 nvidia,密码为 nvidia。主文件夹是 /home/nvidia

  • 以下是为刷写和重复使用设置容器的示例

    • 初始安装和刷写;此示例使用 JetPack 6.1 和 Jetson AGX Orin 开发者套件。

      docker run -it --privileged -v /dev/bus/usb:/dev/bus/usb/ -v /dev:/dev -v /media/$USER:/media/nvidia:slave --name JetPack_AGX_Orin_Devkit --network host sdkmanager --cli --action install --login-type devzone --product Jetson --target-os Linux --version 6.1 --target JETSON_AGX_ORIN_TARGETS --flash --license accept --stay-logged-in true --collect-usage-data enable --exit-on-finish
      
    • 安装和刷写后,将容器提交为新镜像。

      docker commit JetPack_AGX_Orin_Devkit  jetpack_agx_orin_devkit:6.1_flash
      
      docker container rm  JetPack_AGX_Orin_Devkit
      
    • 接下来,可以直接从创建的镜像执行刷写,无需其他参数。刷写完成后,可以删除容器。

      docker run -it --rm --privileged -v /dev/bus/usb:/dev/bus/usb/ jetpack_agx_orin_devkit:6.1_flash
      

已知问题#

  • 当使用 SDK Manager Docker 镜像安装 JetPack SDK 时,你应该首先在你的主机上安装 qemu-user-staticbinfmt-support,然后在你的主机上运行以下命令

    sudo update-binfmts --enable
    

    如果没有这些步骤,你将在从文件系统和操作系统组件安装期间收到以下错误

    'dpkg': Exec format error
    
  • 当使用 SDK Manager Docker 镜像安装 DRIVE SDK 时,如果 ADB 在主机上运行,则刷写目标可能会失败。请确保在刷写之前停止 ADB,使用主机上的以下命令

    sudo killall adb
    
  • SDK Manager Docker 镜像目前不支持在所有 Jetson 设备上刷写到外部存储。