Date: 03.09.2025
NVIDIA Container Toolkit for Docker
In this articale detailed described how to install NVIDIA Container Toolkit for Docker
Hot links
Supported platforms
| OS | 
|---|
| Ubuntu 24.04 | 
| Ubuntu 22.04 | 
| Ubuntu 20.04 | 
Requirments
- This package requires the NVIDIA driver (>= 340.29) to be installed separately.
 
Test environment
- NVIDIA Tesla V100
 - Workstation 40 GB RAM, 500GB SSD, 750W Power supply
 - Ubuntu 24.04 LTS
 - Docker CE
 
My test environment: HP Z440 + NVIDIA Tesla V100
Preparation
- 
    
Prepare your workstation with following instruction NVIDIA Tesla V100 GPU SXM2
 - 
    
Check installation
nvidia-smi clinfo 
Install NVIDIA Container Toolkit
- Install GPG key for ubuntu nvidia repo
 
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
    sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
- Add nvidia toolkit repo
 
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
- Update apt repo data
 
sudo apt update
- Install toolkit
 
export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.17.8-1
sudo apt install -y \
    nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
    nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
    libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
    libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}
- Configure docker for nvidia plugin
 
sudo nvidia-ctk runtime configure --runtime=docker
cat /etc/docker/daemon.json
sudo reboot
- Check nvidia container toolkit configuration
    
Docker image with cuda not required for testing, nvidia plugin will mount nvidia-smi executable directly to container
 
docker run --rm --gpus all ubuntu:24.04 nvidia-smi
What docker run --gpus all actually do?
Something like this:
docker run --rm \
  --device=/dev/nvidia0 \
  --device=/dev/nvidiactl \
  --device=/dev/nvidia-uvm \
  -v /usr/bin/nvidia-smi:/usr/bin/nvidia-smi:ro \
  -v /usr/lib/x86_64-linux-gnu/libnvidia-ml.so:/usr/lib/x86_64-linux-gnu/libnvidia-ml.so:ro \
  -e LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libnvidia-ml.so \
   ubuntu:24.04 nvidia-smi
Can we use nvidia GPU without nvidia-container-toolkit in docker?
We can, but it may cause some unexpected behaviour