Running and Building Jeston images for ZED, OpenCV and ROS In the previous section Linux-ZED SDK docker images along with OpenCV and ROS support was discussed.Here we learn running and building ZED-SDK with OpenCV and ROS docker images for Jetson. Creating the image and using OpenCV or ROS in Docker is very much similar to that discussed earlier. The difference here would be that the Docker images are created for Jetson platforms and hence the parent image also changes to the one that is built for the same platform. Running OpenCV and ROS sample applications will be entirely same as running them on desktop based images hence this tutorial only discusses creating Docker image using Dockerfile and build scripts Before you go ahead and try creating the Docker images we suggest you go through an earlier tutorial which explains Running and Building ARM Docker Containers on x86. Creating Docker Image for Jetson with OpenCV Similar to the linux images Dockerfile and build-opencv-jetson-image.sh scripts are provided here. # Build arguments ARG ZED_SDK_MAJOR ARG ZED_SDK_MINOR ARG L4T_MINOR_VERSION # Specify the parent image from which we build FROM stereolabs/zed:${ZED_SDK_MAJOR}.${ZED_SDK_MINOR}-devel-l4t-r32.${L4T_MINOR_VERSION} ARG OPENCV_VERSION The parent images are based on the NVIDIA l4t-base container with ZED SDK library and dependencies installed. The official ZED SDK Docker images for Jetson are located in Stereolabs DockerHub repository. Build Script Build scripts for Jetson are simpler. build-opencv-jetson-image.sh configures the build arguments and runs the docker build command by assigning the default image tag. #!/bin/bash set -e # This is a shell script that configures the build arguments to the Dockerfile # and builds a Docker image for Jetson with a default tag. #Build Arguments ZED_SDK_MAJOR=3 # ZED SDK major version ZED_SDK_MINOR=7 # ZED SDK minor version L4T_MINOR_VERSION=7 #L4T Minor version OPENCV_VERSION=4.5.3 #OpenCV Version # Default Tag based on the selected versions TAG="${ZED_SDK_MAJOR}.${ZED_SDK_MINOR}-opencv-tools-devel-l4t-r32.${L4T_MINOR_VERSION}" echo "Building '${TAG}'" docker build --build-arg 4T_MINOR_VERSION=${L4T_MINOR_VERSION} \ --build-arg ZED_SDK_MAJOR=${ZED_SDK_MAJOR} \ --build-arg ZED_SDK_MINOR=${ZED_SDK_MINOR} \ --build-arg OPENCV_VERSION=${OPENCV_VERSION} \ -t "${TAG}" -f Dockerilfe.opencvjetson . Build and Run you Docker Image After configuring the build arguments run the script to build the docker image. ./build-opencv-jetson-image.sh docker run --gpus all -it --privileged <container tag> That’s it! You can install zed-opencv sample to test your image. Creating Docker Image for Jetson with ROS The files cane downloaded from here , Instead of choosing the OpenCV version ROS_DISTRO is chosen. Since the OS on Jetson boards are based on Ubuntu 18.04, melodic would be the preferred distro and build-ros-jetson-image.sh script creates a Docker image with configured SDK version and L4T_MINOR_VERSION. Below you can find corresponding sections of Dockerfile.rosjetson and build-ros-jetson-image.sh script ARG ZED_SDK_MAJOR ARG ZED_SDK_MINOR ARG L4T_MINOR_VERSION ARG ROS_DISTRO_ARG # Specify the parent image from which we build FROM stereolabs/zed:${ZED_SDK_MAJOR}.${ZED_SDK_MINOR}-devel-l4t-r32.${L4T_MINOR_VERSION} #!/bin/bash set -e # This is a shell script that configures the build arguments to the Dockerfile # and builds a Docker image for Jetson with a default tag. ZED_SDK_MAJOR=3 # ZED SDK major version ZED_SDK_MINOR=7 # ZED SDK minor version L4T_MINOR_VERSION=7 #L4T Minor version ROS_DISTRO_ARG="melodic" # ROS DISTRO # Default Tag based on the selected versions TAG="${ZED_SDK_MAJOR}.${ZED_SDK_MINOR}-ros-tools-devel-l4t-r32.${L4T_MINOR_VERSION}" echo "Building '${TAG}'" docker build --build-arg 4T_MINOR_VERSION=${L4T_MINOR_VERSION} \ --build-arg ZED_SDK_MAJOR=${ZED_SDK_MAJOR} \ --build-arg ZED_SDK_MINOR=${ZED_SDK_MINOR} \ --build-arg ROS_DISTRO_ARG=${ROS_DISTRO_ARG} \ -t "${TAG}" -f Dockerilfe.rosjetson . Build and Run you Docker Image After configuring the build arguments run the script to build the docker image. ./build-ros-jetson-image.sh docker run --gpus all -it --privileged <container tag> Make sure you follow best practices while creating you image , a few of the best practices are discussed earlier Note Although l4t-base containers include OpenGL support it can be tricky to use it with display support, hence we suggest you to run the containers without display support.