Updated March 1,2025
One of the changes from the previous version of JetPack versus JetPack 6 is that installing from a host x86 machine not install Docker by default. The SD card install for a Jetson Orin Nano incudes Docker, but host installs do not. Looky here:
Background
When you install Jetson Linux from an x86 host machine, the process flashes the operating system onto the Jetson device. If you’re using the NVIDIA SDK Manager, it goes a step further and installs JetPack—NVIDIA’s suite of tools and libraries—onto the Jetson as well. However, even though the flash process includes the nv-containers library for supporting containerized workloads, Docker itself isn’t installed by default anymore with JetPack 6. This is a shift from previous versions, where Docker came pre-installed on host-based setups. (The SD card install for a Jetson Orin Nano, on the other hand, still includes Docker out of the box.)
This change matters because Docker is a cornerstone for many in the Jetson community, especially those working on machine learning, AI, and robotics projects. It simplifies deploying and managing complex applications, making it foundational to much of the community’s efforts. So, when Docker isn’t included—or worse, breaks after an update—it can throw a wrench into your workflow.
These scripts install Docker on the rootfs, and are meant for systems that run from a SSD. On a Jetson Orin Nano Developer Kit, if you want to use your SSD strictly as a separate data store and boot from the SD card, do not use these scripts. Instead see: Tips – SSD + Docker on the Jetson AI Lab website.
Install and Configure Docker
To install Docker, first clone the repository and switch to its directory:
$ git clone https://github.com/jetsonhacks/install-docker.git
$ cd install-docker
Then, to install Docker (which will also downgrade to version 27.5.1):
$ bash ./install_nvidia_docker.sh
Configuring Docker
To use Docker more efficiently on the Jetson, we can add ourselves to the docker group. This will allow us to work with Docker without having to prefix our commands with sudo. In order to take advantage of the Jetson hardware and GPU, we set the Docker runtime to ‘nvidia’:
$ bash ./configure_nvidia_docker.sh
Unhold and Upgrade Docker
If you installed Docker using these scripts, the Docker packages may have been downgraded and marked as ‘hold’ so that they would not be upgraded with apt upgrade. This is because Docker release 28.0.0 was not compatible with the default Jetson configuration. A subsequent Docker release addressed this issue, but still has problems on the Jetson. This script does a ‘mark unhold’ on the affected packages and upgrades, which will be handy when the issue is fixed.
$ base ./unhold_and_upgrade_docker.sh
Downgrade Docker
An issue with Docker 28.0.0 (released 2/20/2025) requires changes to the kernel which are not implemented in the current Jetson 6.2 release. If you have Docker installed, and after an apt upgrade the Docker daemon will not run, you can downgrade to Docker 27.5.1 using the downgrade_docker.sh script:
$ bash ./downgrade_docker.sh
Docker is downgraded to 27.5.1 and the packages are marked hold so that apt upgrade will not upgrade them automatically.
Important Note: The packages are marked as ‘hold’ which means that Docker will not be upgraded the next time you perform an ‘apt upgrade’. In the future you may want to change this, for example, when the official NVIDIA Jetson kernel is upgraded.
Conclusion
The actual process of installing Docker is not difficult. However, when you encounter an error when the program is upgraded and doesn’t work anymore, it can be quite frustrating. Hopefully there’s enough information here to tell you what’s going on, and help you through this rough patch.
With JetPack 6 skipping Docker by default, these scripts keep your AI and robotics projects on track.