Manage ZED SDK Containers and Images
This page explains how to choose a ZED SDK Docker image, how to list, stop, remove, and clean up containers and images, and how to keep the AI models and calibration files when a container is recreated. It applies to both desktop and NVIDIA® Jetson™ hosts.
Two terms are used throughout the page:
- An image is a read-only template, such as
stereolabs/zed:5.5-runtime-cuda13.0-ubuntu22.04. Images are downloaded withdocker pullor built withdocker build. - A container is a running (or stopped) instance of an image. Every
docker runcommand creates a new container with its own writable filesystem, which is deleted when the container is removed.
Choose a ZED SDK Image
The ZED SDK images are published in several variants. The variant is the part of the tag that follows the ZED SDK version: runtime in stereolabs/zed:5.5-runtime-cuda13.0-ubuntu22.04, or tools-devel in stereolabs/zed:5.5-tools-devel-l4t-r36.5.
A few points to keep in mind when choosing:
- For production, use
runtime. On desktop, aruntimeimage is about three times smaller than the matchingdevelimage (about 2 GB compressed instead of 6 GB), because it does not include the CUDA development toolchain. - To build, use
devel, then shipruntime. With a multi-stage build, compile your application in adevelstage and copy the binaries into aruntimestage. - To run a ZED tool or a sample, use
tools-devel(Jetson™) orgl-devel(desktop). Theruntimeanddevelimages do not include them. At the time of writing, thegl-develvariant is not yet published for ZED SDK 5.5, see Install on Linux. - Python on desktop needs no specific variant. All desktop images include the ZED Python API. The
py-runtimeandpy-develvariants exist only for Jetson™. - OpenGL on Jetson™ needs no specific variant. All Jetson™ images support display output. On desktop, only
gl-develimages can open a window.
The ZED SDK version of a tag can be written as 5.5 or 5.5.0. A 5.5 tag follows the latest patch release of ZED SDK 5.5, while a 5.5.0 tag always points to that exact release. Use the full version to make sure every machine of a fleet runs the same ZED SDK.
See Install on Linux and Install on NVIDIA® Jetson™ for the full tag format and the available CUDA, Ubuntu, and L4T combinations.
Manage Containers
Start a Container with a Name
By default, Docker gives each new container a random name. Use --name to choose one, so the container is easy to find and to control later:
A container name is unique: running the same command a second time fails with a Conflict. The container name "/zed" is already in use error until the first container is removed. To create a temporary container that is deleted automatically as soon as it exits, add the --rm option.
List Containers
Example output of docker ps -a, with one running container and one stopped container:
The STATUS column shows whether a container is running (Up) or stopped (Exited), and the NAMES column gives the name to use in the commands below. A stopped container no longer uses the GPU or the camera, but it still uses disk space.
Stop, Restart, and Reopen a Container
Stopping a container does not delete it: the packages you installed and the files you created inside it are still there when it is started again. They are only lost when the container is removed.
docker start reuses the options given to the original docker run command. To change an option, for example to add a volume or to use another image, remove the container and create a new one with docker run.
Remove Containers
Removing a container deletes everything that was written inside it and not stored in a shared folder or a volume, including the AI models and the calibration files downloaded by the ZED SDK. See Keep AI Models and Calibration Files Across Containers.
Start a Container Automatically
For an application that must start when the machine boots and restart if it crashes, run the container in the background with a restart policy:
To describe several containers and their options in a single file, see Orchestrate Containers.
Manage Images
List Images
Example output of docker images stereolabs/zed:
Example output of docker system df. The RECLAIMABLE column shows the space that a cleanup can free:
The sizes above are given as an example. The columns printed by docker images can also differ slightly depending on the Docker version.
Remove Images
An image cannot be removed while a container, even a stopped one, still uses it. In this case, Docker reports which container must be removed first:
Update to a New ZED SDK Version
A container always keeps the image it was created from. To move to another ZED SDK version, pull the new image and create a new container from it:
The AI models are specific to a ZED SDK version: after an update, the ZED SDK downloads and optimizes them again the first time they are used.
Clean Up Disk Space
ZED SDK images are several gigabytes each, so unused images and stopped containers can quickly fill the storage of an embedded device. Check what uses the space with docker system df, then remove what is no longer needed:
Each command asks for confirmation before deleting anything, then reports the space it freed. For example, with docker container prune:
Do not add the --volumes option to docker system prune, and do not run docker volume prune, without checking the volume list first with docker volume ls. Depending on the Docker version, these commands delete the volumes that are not attached to a container, which can include the ones that store your AI models. Folders shared with -v /host/path:/container/path are never deleted by Docker.
Keep AI Models and Calibration Files Across Containers
The ZED SDK stores two kinds of data inside the container the first time it needs them:
Since these folders belong to the container filesystem, their content is lost when the container is removed, and every new container starts from scratch. To keep it, store the two folders on the host and share them with every container.
Share Host Folders
Add the following options to your docker run command:
For example:
The first container downloads and optimizes the models into the host folder. All the following containers, including the ones created from a rebuilt image, find them there and do not download or optimize them again.
- The host folders can be any folders, for example
${HOME}/zed/resourcesand${HOME}/zed/settings. Docker creates them if they do not exist. - If the same ZED SDK version is installed on the host, sharing its own
/usr/local/zed/resourcesand/usr/local/zed/settingsfolders lets the containers reuse the models and calibration files already present on the host. - Use a different host folder for each ZED SDK version, for example
${HOME}/zed/5.5/resources, when containers with different ZED SDK versions run on the same machine. - The same folders can be shared with several containers at the same time. See Multi-Camera Setup to avoid optimizing the same model in several containers at once.
- GMSL2 cameras (ZED X, ZED X One) require additional volumes, listed in Volumes.
Use Docker Volumes
As an alternative to host folders, Docker can manage the storage itself with named volumes:
Named volumes are created on first use, listed with docker volume ls, and kept when the containers are removed. They are deleted only by docker volume rm, or by a volume cleanup.
Prepare the Files in Advance
On a system without an internet connection, or to avoid any download and optimization delay on the first start, prepare the content of the two folders before deploying. The Offline Deployment guide explains how to:
- Download the calibration file of each camera manually.
- Download and optimize the AI models manually, and copy them to another system.
- Use these files in a Docker container, with shared folders or by copying them into your image.
Preparing the AI models in advance from a container requires the ZED Diagnostic tool, which is only included in the tools-devel (Jetson™) and gl-devel (desktop) images. See Choose a ZED SDK Image.
Check That the Files Are Kept
After the first run, list the shared folders on the host. The resources folder contains the downloaded file and the hidden optimized file of each AI model that was used, and the settings folder contains one file per camera:
If the folders are still empty after the application used an AI model, check that the -v options were part of the docker run command that created the container:
Each shared folder is listed with its host path (Source) and its container path (Destination). An empty list ([]) means that the container was created without any shared folder:

