# Instalación de NVIDIA Container Toolkit para su uso en Docker

---
### Integrar GPU NVIDIA con Docker (NVIDIA Container Toolkit 1.17.0)

Integrar GPUs NVIDIA con Docker permite ejecutar aplicaciones aceleradas por GPU dentro de contenedores, ideal para tareas como aprendizaje profundo y cómputo intensivo. Aquí se detalla cómo instalar y configurar el **NVIDIA Container Toolkit 1.17.0** en sistemas Ubuntu/Debian.

---

### Requisitos previos

#### Hardware

* **GPU NVIDIA:** Compatible con CUDA. Revisa la [lista oficial](https://developer.nvidia.com/cuda-gpus).
* **Memoria suficiente:** Asegúrate de que la GPU tenga memoria para las tareas que quieres correr.

#### Software

1. **Sistema operativo:** Ubuntu 18.04/20.04/22.04 o Debian Stretch/Buster.
2. **Controladores NVIDIA instalados:** Verifica con:

   ```bash
   nvidia-smi
   ```
3. **Docker instalado:** Comprueba con:

   ```bash
   docker --version
   ```

   Si no lo tienes, sigue la [documentación oficial](https://docs.docker.com/engine/install/).
4. **CUDA Toolkit (opcional):** Solo si vas a ejecutar código CUDA fuera de Docker:

   ```bash
   nvcc --version
   ```

---

### Instalación del NVIDIA Container Toolkit

#### 1. Configurar el repositorio de NVIDIA

```bash
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/stable/$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
```

Esto añade el repositorio y la clave GPG necesaria.

#### 2. Actualizar repositorios

```bash
sudo apt-get update
```

#### 3. Instalar el toolkit

```bash
sudo apt-get install -y nvidia-container-toolkit
```

#### 4. Configurar Docker para usar el runtime de NVIDIA

```bash
sudo nvidia-ctk runtime configure --runtime=docker
```

Este comando edita automáticamente `/etc/docker/daemon.json`.

#### 5. Reiniciar Docker

```bash
sudo systemctl restart docker
```

---

### Verificar la instalación

#### Contenedor de prueba

```bash
sudo docker run --rm --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
```

Debe mostrar el estado y detalles de tu GPU.

---

### Solución de problemas

#### Problemas comunes

* **`nvidia-smi` no funciona en el host:** Revisa los controladores.
* **Docker no detecta GPU:** Revisa configuración del runtime.
* **Errores en el contenedor:** Asegúrate de que el toolkit esté instalado correctamente.

---

### Referencias

* [Guía oficial de instalación de NVIDIA Container Toolkit 1.17.0](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/1.17.0/install-guide.html)