Nvidia:Docker
lastmod 2025-12-18created 2018-07-2425 edits
How to install
(2024-04-08) Ubuntu 20.04 installation verified with the latest version
- Installing the NVIDIA Container Toolkit — NVIDIA Container Toolkit 1.14.5 documentation <- Refer to this manual.
- Running a Sample Workload — NVIDIA Container Toolkit 1.14.5 documentation
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-get update
sudo apt-get install -y nvidia-container-toolkit
Configure the container runtime by using the nvidia-ctk command:
Running the command above prints a log like the following.
WARN[0000] Ignoring runtime-config-override flag for docker
INFO[0000] Config file does not exist; using empty config
INFO[0000] Wrote updated config to /etc/docker/daemon.json
INFO[0000] It is recommended that docker daemon be restarted.
The nvidia-ctk command modifies the /etc/docker/daemon.json file on the host. The file is updated so that Docker can use the NVIDIA Container Runtime.
Restart the docker service:
Running a Sample Workload with Docker:
(2022-10-27) Ubuntu 20.04 installation verified with the latest version
Setting up Docker
Docker-CE on Ubuntu can be setup using Docker’s official convenience script:
Setting up NVIDIA Container Toolkit
Setup the package repository and the GPG key:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& 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/$distribution/libnvidia-container.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
| WARNING |
| For versions of the NVIDIA Container Toolkit prior to 1.6.0, the nvidia-docker repository should be used instead of the libnvidia-container repository above. |
In some cases, the downloaded list file may contain URLs that do not match the expected distribution value, because the packages can be used for all compatible distributions. For example:
- For distribution values of ubuntu20.04 or ubuntu22.04, the file contains ubuntu18.04 URLs.
- For a distribution value of debian11, the file contains debian10 URLs.
| WARNING |
| If you get an error about conflicting Signed-By options when running apt update after configuring the repository, see the relevant troubleshooting section. |
Install the nvidia-docker2 package (and dependencies) after updating the package listing:
Restart the Docker daemon to complete the installation after setting the default runtime:
At this point, a working setup can be tested by running a base CUDA container:
This should result in a console output shown below:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.51.06 Driver Version: 450.51.06 CUDA Version: 11.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla T4 On | 00000000:00:1E.0 Off | 0 |
| N/A 34C P8 9W / 70W | 0MiB / 15109MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
Ubuntu 16.04/18.04/20.04, Debian Jessie/Stretch/Buster
# Add the package repositories
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
$ sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
$ sudo systemctl restart docker
CentOS 7.X/8.X (docker-ce), RHEL 7.X/8.X (docker-ce), Amazon Linux 1/2
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo
$ sudo yum install -y nvidia-container-toolkit
$ sudo systemctl restart docker
Usage
#### Test nvidia-smi with the latest official CUDA image
docker run --gpus all nvidia/cuda:10.0-base nvidia-smi
# Start a GPU enabled container on two GPUs
docker run --gpus 2 nvidia/cuda:10.0-base nvidia-smi
# Starting a GPU enabled container on specific GPUs
docker run --gpus '"device=1,2"' nvidia/cuda:10.0-base nvidia-smi
docker run --gpus '"device=UUID-ABCDEF,1"' nvidia/cuda:10.0-base nvidia-smi
# Specifying a capability (graphics, compute, ...) for my container
# Note this is rarely if ever used this way
docker run --gpus all,capabilities=utility nvidia/cuda:10.0-base nvidia-smi
Legacy versions used --runtime=nvidia instead of --gpus all.
nvidia-docker-compose
Troubleshooting
libnvidia-tls.so no search file
The following error may occur.
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: conatiner init caused \"process_linux.go:432: running prestart hook 0 caused \\\"error running hook: exit status 1, stdout: , stderr: nvidia-container-cli: detection error: open failed: /usr/lib/x86_64-linux-gnu/libnvidia-tls.so.450.36.06: no such file or directory
The file /usr/lib/x86_64-linux-gnu/libnvidia-tls.so.450.36.06 cannot be found. Running the nvidia-container-cli -V command probably won't work properly either.
Reinstall nvidia-docker.
could not select device driver
The following error is printed:
Reinstall the container toolkit:
See also
Favorite site
- Repository configuration (nvidia-docker)
- [Recommended] NVIDIA NGC (list of Docker images)
- Github - nvidia-container-runtime
- DGX-1 DOCKER USER GUIDE 17.08
- Building a deep learning development environment with Docker 1
- (Docker) How the NVIDIA Container Toolkit (NVIDIA Docker) works
References
-
EXPERIENTIA_DOCET_-_nvidia_docker_ngc.pdf ↩