Docker Images

Download and Install

  1. Download and install the Docker engine for your system: Install Docker Engine @ Docker Documentation.

    For Linux users, it is recommended that you enable managing Docker as a non-root user, as described in Post-installation steps for Linux @ Docker Documentation.

  2. From the download page, locate sdkmanager-[version].[build#]-[base_OS]_docker.tar.gz, where [version] and [build] represent the current version number and build number of SDK Manager.

  3. Download the file to your host machine.

  4. From a terminal, load the Docker image:

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

    It is recommended that you tag the version as “latest” for ease of use:

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

Using the SDK Manager Docker Image

Guidelines

  • The image is built for using SDK Manager CLI mode only. Refer to Install with the Command Line for more information.

  • Flashing the target device requires full access to the USB port on the host machine.

Note

Creating a DRIVE image for DRIVE Software 10.0 is not currently supported.

Base Usage

The Docker image is designed to be executed directly from the host, without the need to open the terminal inside the docker itself. The sdkmanager executable is the entrypoint.

SDK Manager CLI arguments should be used directly when running a new container:

  • SDK Manager CLI

    sdkmanager --ver
    
  • SDK Manager CLI with Docker

    docker run -it --rm sdkmanager --ver
    

Refer to Install with the Command Line for more information.

Additional Considerations

  • By default, the initial container has a clean profile and local database. This needs to be taken into consideration as far as how to use the image and when to save the changes (commit) into a new image. This will depend on the usage plans for the container if there is a plan to re-use it after installation or start each time from a clean phase. Alter your plans according to whether you intend to have a different container for each SDK release or a unique one.

  • Flashing requires privileged access and mapping USB ports into the container:

    --privileged -v /dev/bus/usb:/dev/bus/usb/ -v /dev:/dev -v /media/$USER:/media/nvidia:slave
    
  • Depending on your local network’s security settings, you may need to set access to your local network with --network host. This is primarily needed if you want to interact with Jetson devices via L4T USB Device mode.

  • The local user inside the Docker is nvidia with nvidia as the password. The home folder is /home/nvidia.

  • Examples for setting the container for flashing and re-use are as follows:

    • Initial install and flash; this example uses JetPack 5.1.2 and the Jetson Orin NX.

      docker run -it --privileged -v /dev/bus/usb:/dev/bus/usb/ -v /dev:/dev -v /media/$USER:/media/nvidia:slave --name JetPack_NX_Devkit --network host sdkmanager --cli --action install --login-type devzone --product Jetson --target-os Linux --version 5.1.2 --host --target JETSON_ORIN_NX_TARGETS --flash --license accept --stay-logged-in true  --collect-usage-data enable --exit-on-finish
      
    • After install and flash, commit the container as a new image.

      docker commit JetPack_NX_Devkit jetpack_nx_devkit:5.1.2_flash
      
      docker container rm  JetPack_NX_Devkit
      
    • Next, flash can be executed from the created image directly, without additional arguments. The container can then be removed after flash is complete.

      docker run -it --rm --privileged -v /dev/bus/usb:/dev/bus/usb/ jetpack_nx_devkit:5.1.2_flash
      

Known Issues

  • When installing JetPack SDK using the SDK Manager Docker image, you should first install qemu-user-static and binfmt-support on your host machine, then run the following command on your host machine:

    sudo update-binfmts --enable
    

    Without these steps, you will get the following error during installation from the File System and OS component:

    'dpkg': Exec format error
    
  • When installing the DRIVE SDK using the SDK Manager Docker image, flashing the target may fail if ADB is running on the host machine. Make sure to stop the ADB before flashing, using the following command on your host machine:

    sudo killall adb