Deepstream 9.1 Production Base Image

  • Hardware Platform: RTX5070Ti/Jetson Orin AGX 64GB
  • DeepStream Version 9.1
  • JetPack Version (valid for Jetson only) 7.2.1
  • TensorRT Version 10.16.x
  • NVIDIA GPU Driver Version (valid for GPU only) 610 open
  • Question

What is the recommended minimal size docker base image to deploy a compiled C++ binary as part of a Docker Image.
There seem to be only two images supported:

deepstream-9.1:triton-multiarch:
This seems to be the “large” one with still > 12 Gigabytes, containing all samples and dev dependencies

deepstream-9.1:samples:
this is a little bit smaller but still huge.

I already created a split approach having a base image with additional installs like gstreamer-rs plugins for webrtc, but this base image is 18 Gigabytes, then my release image only adds the compiled binary ~5MB to it.
If i ever need to update the base image accross the fleet downloading ~20 Gigabytes per machine is a no-go, as in deepstream 9.2 updates etc.. This size seems like it is bloated and contains thinges i will never use in production.

What ways does nvidia recommend to deploy deepstream based applications in 2026?

You could consider building your own Docker image from dockerfile.

If you want to minimize the image size, you could remove unused video/.so files from the image.

Noting that you’re using Orin. I don’t recommend Docker deployment because Docker images depend on the Jetpack version; host deployment is generally a better recommendation.

For DeepStream 9.1, please refer to DeepStream/deepstream_dockers at main · NVIDIA/DeepStream for the docker files.

before i go through the effort to create my own deepstream docker file.
can you estimate the reduction in size.
Only saving on some .so files seems like its not worth it.
I was talking like tools that are never used, nsight systems for example.
Where does the 14 Gigabyte difference between the base cuda image and the deepstream images come from?

if docker deployment is not recommendet, why are you providing Dockerfiles specifically for jetson?
I dont see a different way, as our services are deployed using k8s

No relevant data is currently available.
The increased size includes the gstreamer base library, TensorRT, tritonserver(for nvinferserver), deepstream libraries, deepstream sdk test videos, etc.

This is just a suggestion that it’s not recommended. If you’re using Kubernetes, please continue to use container deployment.

my pipeline is not using tritonserver.
also the test videos are not needed as well, are these also contained in the samples docker image?
if so, then i will give it a shot to build my own base image

Compared to the TensorRT base image, the samples-multiarch image adds only about 2 GB. Libraries related to Triton Inference Server have been removed from samples-multiarch;
Disk USAGE refers to the space occupied after extraction; this is related to Docker image layers, This is not something DeepStream can handle.

IMAGE                                                     ID             DISK USAGE   CONTENT SIZE 
nvcr.io/nvidia/cuda:13.0.0-tensorrt-runtime-ubuntu24.04   198208c45877       9.69GB         4.19GB 
nvcr.io/nvidia/deepstream:9.1-samples-multiarch           4f80b374e4a5       16.2GB         6.39GB

The /opt/nvidia/deepstream/deepstream-9.1/samples directory within the image—containing models and test video files—accounts for approximately 624 MB.
Whether the other directories can be deleted depends on your application.

root@d6ec4519c615:/opt/nvidia/deepstream/deepstream-9.1/samples# ls
configs  models  prepare_classification_test_video.sh  prepare_ds_triton_model_repo.sh  prepare_ds_triton_tao_model_repo.sh  streams  triton_backend_setup.sh  triton_model_repo  triton_tao_model_repo  trtis_model_repo
root@d6ec4519c615:/opt/nvidia/deepstream/deepstream-9.1/samples# du -sh .
624M	.