LLM Laboratory

Date: 03.09.2025

NVIDIA Container Toolkit for Docker

In this articale detailed described how to install NVIDIA Container Toolkit for Docker

Supported platforms

OS
Ubuntu 24.04
Ubuntu 22.04
Ubuntu 20.04

Requirments

Test environment

My test environment: HP Z440 + NVIDIA Tesla V100

Preparation

Install NVIDIA Container Toolkit

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
    sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
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
sudo apt update
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}
sudo nvidia-ctk runtime configure --runtime=docker
cat /etc/docker/daemon.json
sudo reboot
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