{"id":45436393,"url":"https://github.com/stereolabs/zed-docker","last_synced_at":"2026-02-22T03:08:44.449Z","repository":{"id":41843400,"uuid":"151053137","full_name":"stereolabs/zed-docker","owner":"stereolabs","description":"Docker images for the ZED SDK","archived":false,"fork":false,"pushed_at":"2025-06-18T08:34:45.000Z","size":173,"stargazers_count":55,"open_issues_count":10,"forks_count":18,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-06-18T09:32:17.507Z","etag":null,"topics":["cuda","docker","nvidia-docker","zed-camera"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/stereolabs/zed/","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stereolabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-10-01T07:46:20.000Z","updated_at":"2025-06-18T08:34:45.000Z","dependencies_parsed_at":"2025-05-26T14:45:01.272Z","dependency_job_id":null,"html_url":"https://github.com/stereolabs/zed-docker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/stereolabs/zed-docker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stereolabs%2Fzed-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stereolabs%2Fzed-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stereolabs%2Fzed-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stereolabs%2Fzed-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stereolabs","download_url":"https://codeload.github.com/stereolabs/zed-docker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stereolabs%2Fzed-docker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29704406,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T23:35:04.139Z","status":"online","status_checked_at":"2026-02-22T02:00:08.193Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cuda","docker","nvidia-docker","zed-camera"],"created_at":"2026-02-22T03:08:43.745Z","updated_at":"2026-02-22T03:08:44.439Z","avatar_url":"https://github.com/stereolabs.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Docker with the ZED SDK\n\nThese images let you use the ZED SDK with docker, even with the ZED camera connected (or an SVO file)\n\n## Getting started\n\n### Setup Docker\n\nSince we need CUDA, **NVIDIA Container Toolkit must be used** (except for compilation only).\n\nFollow the instructions at https://github.com/NVIDIA/nvidia-docker\n\nOnce NVIDIA Container Toolkit is installed, make sure it runs fine by launching :\n\n    docker run --gpus all --rm nvidia/cuda nvidia-smi\n\n### Pull the image from docker hub\n\nAll the available images can be found at [docker hub](https://hub.docker.com/r/stereolabs/zed/)\n\n    docker pull stereolabs/zed:4.0-runtime-cuda11.8-ubuntu20.04\n    docker run --gpus all -it --privileged stereolabs/zed:4.0-runtime-cuda11.8-ubuntu20.04\n\n`--privileged` option is used to pass through all the device to the docker container, it might not be very safe but provides an easy solution to connect the USB3 camera to the container.\n\n\n---\n\nWhen using the **object detection module**, a volume should be used to store the model and optimized model to avoid re-downloading it and re-optimizing it every time.\n\n    docker run --gpus all -it --privileged -v /usr/local/zed/resources:/usr/local/zed/resources stereolabs/zed:4.0-runtime-cuda11.8-ubuntu20.04\n\nNote : On the host it can point to an other folder than `/usr/local/zed/resources` (for instance `-v /mnt/SSD/zed_data:/usr/local/zed/resources`)\n\n### Network support\n\nBy default the host networks are not accessible from a docker container, they're isolated while keeping an external connection (like internet access), it's a bridge. To remove network isolation, for instance, to use the ZED streaming sample, the `network` option needs to be set to `host` :\n\n```\ndocker run --gpus all -it --privileged --network=host stereolabs/zed:4.0-runtime-cuda11.8-ubuntu20.04\n```\n\nThere are other network options, refer to [the docker network documentation](https://docs.docker.com/network/) for more information.\n\n### Display support\n\nA container is also available with OpenGL display support (from [nvidia/cudagl container](https://gitlab.com/nvidia/cudagl)). It is mandatory to open the tools from within an image.\n\n    docker pull stereolabs/zed:4.0-gl-devel-cuda11.4-ubuntu20.04\n\nTo run it, we need to add the right to connect to the X server :\n\n    xhost +si:localuser:root\n\nWhile being simple, please note that this can be a security concern, considering the right given to the container.\n\nThen to run it :\n\n    docker run --gpus all -it --privileged -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix stereolabs/zed:4.0-gl-devel-cuda11.4-ubuntu20.04\n\nAny OpenGL tools are now able to run, for instance :\n\n    /usr/local/zed/tools/ZED\\ Explorer\n\nFor more information on the display usage checkout the [ROS documentation about using Docker with X server](http://wiki.ros.org/docker/Tutorials/GUI).\n\n### USB connection\n\nThe camera connection can be verified using `lsusb`:\n\n    lsusb -d 2b03: -vvv\n\n## Jetson images\n\n### Using docker on Tegra\n\nWith the [recently added support](https://github.com/NVIDIA/nvidia-docker/wiki/NVIDIA-Container-Runtime-on-Jetson) of nvidia docker, it is now possible to run the ZED SDK inside docker on Jetson. We now provide a compatible image :\n\n```bash\ndocker pull stereolabs/zed:5.0-devel-l4t-r36.4\n```\n\nOne exemple of DockerFile can be found [here](4.X/l4t/devel/Dockerfile). The image is based on the [NVIDIA L4T image](https://ngc.nvidia.com/catalog/containers/nvidia:l4t-base).\n\n### Building the image\n\nThe image can either be built on the jetson directly or on Desktop `x86_64` using emulation.\n\nTo setup a `x86_64` host to build `aarch64` image, [QEMU](https://www.qemu.org/) needs to be installed and configured by running :\n\n\n```bash\n    sudo apt-get install qemu binfmt-support qemu-user-static # Set up the qemu packages\n    docker run --rm --privileged multiarch/qemu-user-static --reset -p yes # This step will execute the registering scripts\n``` \n\nTesting the emulation by running a `aarch64` image on desktop :\n\n```bash\n    docker run --rm -t arm64v8/ubuntu uname -m\n\n        aarch64 # -\u003e emulation is working\n```\n\nThe installation was successful, the emulation is working. At this point we can now run `aarch64` programs on the host `x86_64` PC.\n\n```bash\ncd 4.X/l4t/devel\ndocker build --build-arg L4T_MAJOR_VERSION=35 \\\n             --build-arg L4T_MINOR_VERSION=2 \\\n             --build-arg L4T_PATCH_VERSION=1 \\\n             --build-arg ZED_SDK_MAJOR=4 \\\n             --build-arg ZED_SDK_MINOR=0 \\\n             --build-arg JETPACK_MAJOR=5 \\\n             --build-arg JETPACK_MINOR=1.0 \\\n             --build-arg L4T_BASE_IMAGE=\"l4t-jetpack\" \\\n             -t zed:4.0-devel-l4t-r35.2 .\n```\n\nUnfortunately it is not possible to emulate CUDA accelerated program with QEMU.\n\n## Running the image on Jetson natively\n\nA typical full command for ZED2i/ZEDX would be:\n\n```bash\nsudo docker run --runtime=nvidia -v /tmp/argus_socket:/tmp/argus_socket -v /var/nvidia/nvcam/settings/:/var/nvidia/nvcam/settings/ -v /etc/systemd/system:/etc/systemd/system  -v /usr/local/zed/settings/:/usr/local/zed/settings/ -v /usr/local/zed/resources/:/usr/local/zed/resources/ -v /etc/systemd/system/zed_x_daemon.service:/etc/systemd/system/zed_x_daemon.service -v /dev:/dev -v /tmp:/tmp --ipc=host --pid=host -e NVIDIA_DRIVER_CAPABILITIES=all -e DISPLAY=$DISPLAY -it --privileged --network=host stereolabs/zed:5.0-tools-devel-l4t-r36.4\n```\n\nThis will mount all the necessary folders for GMSL communication, display and calibration, and AI model. The tools are also available.\n\n## Troubleshooting\n\n### Nvidia driver libraries missing in the container\n\n- \"`libcuda.so.1` is not found\" : make sure to run the image with `--gpus all` (or specify the GPU ID). It allows docker to mount the host driver into the image.\n\n- \"`libnvcuvid.so.1` is not found\" : make sure to run the image with `--gpus 'all,\"capabilities=compute,video\"'` or `-e NVIDIA_DRIVER_CAPABILITIES=all --gpus all`. It allows docker to mount the host driver, including the hardware decoding library into the image.\n\n### Compiling issues\n\n- `CUDA_CUDA_LIBRARY` not found when running cmake configuration\n```\nCMake Error: The following variables are used in this project, but they are set to NOTFOUND.\nPlease set them or make sure they are set and tested correctly in the CMake files:\nCUDA_CUDA_LIBRARY (ADVANCED)\n```\n- Missing `libnvcuvid.so.1`\n```\n/usr/bin/ld: warning: libnvcuvid.so.1, needed by /usr/local/zed/lib/libsl_zed.so, not found (try using -rpath or -rpath-link)\n/usr/local/zed/lib/libsl_zed.so: undefined reference to `cuvidDestroyDecoder'\n/usr/local/zed/lib/libsl_zed.so: undefined reference to `cuvidUnmapVideoFrame64'\n/usr/local/zed/lib/libsl_zed.so: undefined reference to `cuvidDestroyVideoParser'\n/usr/local/zed/lib/libsl_zed.so: undefined reference to `cuvidMapVideoFrame64'\n/usr/local/zed/lib/libsl_zed.so: undefined reference to `cuvidCtxLockCreate'\n/usr/local/zed/lib/libsl_zed.so: undefined reference to `cuvidGetDecoderCaps'\n/usr/local/zed/lib/libsl_zed.so: undefined reference to `cuvidParseVideoData'\n/usr/local/zed/lib/libsl_zed.so: undefined reference to `cuvidDecodePicture'\n/usr/local/zed/lib/libsl_zed.so: undefined reference to `cuvidCreateDecoder'\n/usr/local/zed/lib/libsl_zed.so: undefined reference to `cuvidCtxLockDestroy'\n/usr/local/zed/lib/libsl_zed.so: undefined reference to `cuvidCreateVideoParser'\ncollect2: error: ld returned 1 exit status\n```\n\nBoth problem can be fixed using the following cmake options :\n\n```\ncmake -DCMAKE_LIBRARY_PATH=/usr/local/cuda/lib64/stubs -DCMAKE_CXX_FLAGS=\"-Wl,--allow-shlib-undefined\" ..\n```\nThe link path need to point to the CUDA stub folder, and since `nvcuvid` can be unavailable at compile time, we tell the compiler to ignore undefined symbols.\n\n\n### USB replug/hot plug\n\nZED-M and ZED2/ZED2i contains a udev device for the IMU and sensors data.\nOn Linux, udev/serial device path are often ephemeral (will change if the device is unplugged and replugged).\n\nIf you unplug/plug them back in, it’s technically a different mapped file for the device than what was mounted in, so Docker won’t see it. For this reason, a solution is to mount the entire /dev folder from the host to the container. You can do this by adding the following volume command to your Docker run command `-v /dev:/dev`\n\nFor example :\n\n```\ndocker run --gpus all -it -v /dev:/dev --privileged stereolabs/zed:4.0-runtime-cuda11.8-ubuntu20.04\n```\n\nWhen not running the container in root (not using --privileged), the udev rules should be installed on the host, for instance by running the ZED SDK installer to be able to open the cameras, it may segfault otherwise. Alternatively [this script](https://gist.github.com/adujardin/2d5ce8f000fc6a7bd40bee2709749ff8) can be run.\n\n### ZED X / GMSL2\n\nFor the ZED X, more folders should be added as volume:\n\n```\n-v /tmp/argus_socket:/tmp/argus_socket -v /var/nvidia/nvcam/settings/:/var/nvidia/nvcam/settings/ -v /etc/systemd/system:/etc/systemd/system -v /etc/systemd/system/zed_x_daemon.service:/etc/systemd/system/zed_x_daemon.service -v /dev:/dev -v /tmp:/tmp\n```\n\n### Using the tools\n\nThe tools are using OpenGL libraries. The \"`gl`\" images are therefore required to use them (see [display support section](#display-support)).\n\n## Contributing\n\nFeel free to open an issue if you find a bug, or a pull request for bug fixes, features or other improvements.\n\n## Support\n\nIf you need assistance, go to our Community site at https://community.stereolabs.com/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstereolabs%2Fzed-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstereolabs%2Fzed-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstereolabs%2Fzed-docker/lists"}