====== Docker - GPU - Use NVIDIA CUDA Toolkit within a Docker container ====== ====== Installation of NVIDIA Drivers ====== Ensure that the NVIDIA drivers are correctly installed on the host system. * These drivers act as the bridge between the operating system and the NVIDIA GPU hardware, ensuring optimal communication and performance. See: [[Ubuntu:GPU:NVIDIA GPU:Setup|Setup]]. ---- ====== Install the NVIDIA Container Toolkit ====== This toolkit extends Docker to leverage NVIDIA GPUs fully, ensuring that the GPU capabilities can be used within containers without any hitches. ===== Download the NVIDIA GPG key ===== curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey -o /tmp/nvidia-gpgkey ---- ===== Dearmor the GPG key and save it ===== gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg /tmp/nvidia-gpgkey ---- ===== Download the NVIDIA container toolkit list file ===== curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list -o /tmp/nvidia-list ---- ===== Modify the list file to include the signature ===== sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' /tmp/nvidia-list > /etc/apt/sources.list.d/nvidia-container-toolkit.list ---- ===== Update the package database ===== apt update ---- ====== Configuring Docker for NVIDIA Support ====== Having the **NVIDIA Container Toolkit** in place, the next essential task is configuring Docker to recognize and utilize NVIDIA GPUs. Configure the Docker runtime to use NVIDIA Container Toolkit by using the **nvidia-container-cli** command. * The Docker configuration file will be modified to use the NVIDIA runtime nvidia-container-cli configure --runtime=docker **NOTE:** Behind the scenes, this command makes alterations to the **/etc/docker/daemon.json** file. * As a result, Docker becomes aware of the NVIDIA runtime and can access GPU features. ====== Restart the Docker daemon ====== systemctl restart docker ---- ====== Running the NVIDIA CUDA Docker Image ====== With all the required setups in place, the exciting part begins: running a Docker container with NVIDIA GPU support. NVIDIA maintains a series of CUDA images on Docker Hub. Pull the specific NVIDIA CUDA image: docker pull nvidia/cuda:12.2.0-base-ubuntu22.04 **NOTE:** Always check for the latest tags at [[https://hub.docker.com/r/nvidia/cuda/tags?page=1&name=base-ubuntu|NVIDIA CUDA Docker Hub]] to stay updated. * Use that instead of the 12.2.0-base-ubuntu22.04 tag shown here. ---- ====== Run the Docker container with GPU support ====== docker run --gpus all -it nvidia/cuda:12.2.0-base-ubuntu22.04 bash **NOTE:** This command runs the Docker container with full GPU access (**--gpus all**) and provides an interactive shell inside the container. * Once inside, use NVIDIA utilities like **nvidia-smi** to confirm GPU access. ----