NVIDIA Container Runtime is a GPU aware container runtime, compatible with the Open Containers Initiative (OCI) specification used by Docker, CRI-O, and other popular container technologies. It simplifies the process of building and deploying containerized GPU-accelerated applications to desktop, cloud or data centers.
With NVIDIA Container Runtime supported container technologies like Docker, developers can wrap their GPU-accelerated applications along with its dependencies into a single package that is guaranteed to deliver the best performance on NVIDIA GPUs, regardless of the deployment environment.
(Click to Zoom)
NVIDIA Container Runtime is the next generation of the nvidia-docker project, originally released in 2016. NVIDIA Container Runtime addresses several limitations of the nvidia-docker project such as, support for multiple container technologies and better integration into container ecosystem tools such as docker swarm, compose and kubernetes:
- Support for multiple container technologies such as LXC, CRI-O and other runtimes
- Compatible with Docker ecosystem tools such as Compose, for managing GPU applications composed of multiple containers
- Support GPUs as a first-class resource in orchestrators such as Kubernetes and Swarm
- Improved container runtime with automatic detection of user-level NVIDIA driver libraries, NVIDIA kernel modules, device ordering, compatibility checks and GPU features such as graphics and video acceleration
Supported Container Technologies
Docker is the most widely adopted container technology by developers. With NVIDIA Container Runtime, developers can simply register a new runtime during the creation of the container to expose NVIDIA GPUs to the applications in the container. NVIDIA Container Runtime for Docker is an open-source project hosted on GitHub.
Running cuda container from docker hub:
sudo docker run --rm --runtime=nvidia
Linux Containers (LXC) is an operating-system-level virtualization tool for running multiple isolated Linux systems (containers) on a control host using a single Linux kernel. LXC supports unprivileged containers required by certain deployments such as in High Performance Computing (HPC) environments, LXC 3 and later available on various Linux distributions, includes support for GPUs using the NVIDIA Container Runtime.
Running a cuda container from docker hub using LXC:
lxc-create -t oci cuda -- -u docker://nvidia/cuda
Read this blog post for detailed instructions on how to install, setup and run GPU applications using LXC
CRI-O is light-weight container runtime that was designed to take advantage of Kubernetes’s Container Runtime Interface (CRI). NVIDIA Container Runtime allows deploying GPU-accelerated applications with CRI-O on Kubernetes.
NVIDIA GPU Cloud (NGC) Containers
The NVIDIA NGC? catalog contains a host of GPU-optimized containers for deep learning, machine learning, visualization, and high-performance computing (HPC) applications that are tested for performance, security, and scalability. Developers, data scientists, and researchers can easily access NVIDIA GPU-optimized containers at no charge, eliminating the need to manage packages and dependencies or build deep learning frameworks from source.
NVIDIA DGX Systems and NGC supported cloud service provider images are pre-configured to run NGC containers. Users of PCs with NVIDIA TITAN and Quadro GPUs will need Docker and NVIDIA Container Runtime to run NGC containers. See the Using NGC with Your NVIDIA TITAN or Quadro PC Setup Guide for detailed instructions. For a detailed list of available optimized containers, click the link below.Get NVIDIA Optimized Containers >