# Primeros pasos con DMR


Docker Model Runner (DMR) te permite ejecutar y gestionar modelos de IA localmente utilizando Docker. Esta página te muestra cómo habilitar DMR, descargar y ejecutar un modelo, configurar los ajustes del modelo y publicar modelos personalizados.

## Habilitar Docker Model Runner

Puedes habilitar DMR utilizando Docker Desktop o Docker Engine. Sigue las instrucciones a continuación según tu configuración.

### Docker Desktop

1. En la vista de configuración, ve a la pestaña **AI**.
2. Selecciona la opción **Enable Docker Model Runner**.
3. Si utilizas Windows con una GPU NVIDIA compatible, también verás y podrás seleccionar **Enable GPU-backed inference**.
4. Opcional: para habilitar el soporte de TCP, selecciona **Enable host-side TCP support**.
   1. En el campo **Port**, escribe el puerto que deseas utilizar.
   2. Si interactúas con Model Runner desde una aplicación web local (frontend), en **CORS Allows Origins**, selecciona los orígenes de los cuales Model Runner debe aceptar solicitudes. Un origen es la URL donde se ejecuta tu aplicación web, por ejemplo `http://localhost:3131`.

Ahora puedes utilizar el comando `docker model` en la CLI y ver e interactuar con tus modelos locales en la pestaña **Models** del panel de control (Dashboard) de Docker Desktop.

### Docker Engine

1. Asegúrate de haber instalado [Docker Engine](/engine/install/).
2. Docker Model Runner está disponible como un paquete. Para instalarlo, ejecuta:

   **Ubuntu/Debian**



   ```bash
   $ sudo apt-get update
   $ sudo apt-get install docker-model-plugin
   ```

   **Distribuciones basadas en RPM**



   ```bash
   $ sudo dnf update
   $ sudo dnf install docker-model-plugin
   ```

   

3. Prueba la instalación:

   ```bash
   $ docker model version
   $ docker model run ai/smollm2
   ```

> [!NOTE]
> El soporte para TCP está habilitado por defecto para Docker Engine en el puerto `12434`.

### Actualizar DMR en Docker Engine

Para actualizar Docker Model Runner en Docker Engine, desinstálalo con [`docker model uninstall-runner`](/reference/cli/docker/model/uninstall-runner/) y luego reinstálalo:

```bash
docker model uninstall-runner --images && docker model install-runner
```

> [!NOTE]
> Con el comando anterior, se conservan los modelos locales.
> Para eliminar los modelos durante la actualización, añade la opción `--models` al
> comando `uninstall-runner`.

## Descargar un modelo

Los modelos se guardan en la caché local.

> [!NOTE]
> Al utilizar la CLI de Docker, también puedes descargar modelos directamente desde [HuggingFace](https://huggingface.co/).

**Desde Docker Desktop**



1. Selecciona **Models** y ve a la pestaña **Docker Hub**.
2. Busca el modelo que deseas y selecciona **Pull**.

![Captura de pantalla que muestra la vista de Docker Hub.](/ai/model-runner/images/dmr-catalog.png)

**Desde la CLI de Docker**



Usa el [comando `docker model pull`](/reference/cli/docker/model/pull/).
Por ejemplo:

```bash {title="Descarga desde Docker Hub"}
docker model pull ai/smollm2:360M-Q4_K_M
```

```bash {title="Descarga desde HuggingFace"}
docker model pull hf.co/bartowski/Llama-3.2-1B-Instruct-GGUF
```



## Ejecutar un modelo

**Desde Docker Desktop**



1. Selecciona **Models** y ve a la pestaña **Local**.
2. Selecciona el botón de reproducción (play). Se abrirá la pantalla de chat interactivo.

![Captura de pantalla que muestra la vista Local.](/ai/model-runner/images/dmr-run.png)

**Desde la CLI de Docker**



Usa el [comando `docker model run`](/reference/cli/docker/model/run/).



## Configurar un modelo

Puedes configurar un modelo, como su límite máximo de tokens y más, utilizando Docker Compose. Consulta [Modelos y Compose - Opciones de configuración de modelos](/ai/compose/models-and-compose/#model-configuration-options).

## Publicar un modelo

> [!NOTE]
> Esto funciona para cualquier registro de contenedores compatible con artefactos de OCI, no solo para Docker Hub.

Puedes etiquetar modelos existentes con un nuevo nombre y publicarlos bajo un espacio de nombres y repositorio diferentes:

```bash
# Etiquetar un modelo descargado con un nuevo nombre
$ docker model tag ai/smollm2 myorg/smollm2

# Subirlo a Docker Hub
$ docker model push myorg/smollm2
```

Para obtener más detalles, consulta la documentación de los comandos [`docker model tag`](/reference/cli/docker/model/tag) y [`docker model push`](/reference/cli/docker/model/push).

También puedes empaquetar un archivo de modelo en formato GGUF como un artefacto de OCI y publicarlo en Docker Hub.

```bash
# Descargar un archivo de modelo en formato GGUF, por ejemplo desde HuggingFace
$ curl -L -o model.gguf https://huggingface.co/TheBloke/Mistral-7B-v0.1-GGUF/resolve/main/mistral-7b-v0.1.Q4_K_M.gguf

# Empaquetarlo como artefacto de OCI y subirlo a Docker Hub
$ docker model package --gguf "$(pwd)/model.gguf" --push myorg/mistral-7b-v0.1:Q4_K_M
```

Para obtener más detalles, consulta la documentación del comando [`docker model package`](/reference/cli/docker/model/package/).

## Resolución de problemas

### Mostrar los registros (logs)

Para solucionar problemas, muestra los registros:

**Desde Docker Desktop**



Selecciona **Models** y ve a la pestaña **Logs**.

![Captura de pantalla que muestra la vista de los modelos.](/ai/model-runner/images/dmr-logs.png)

**Desde la CLI de Docker**



Usa el [comando `docker model logs`](/reference/cli/docker/model/logs/).



### Inspeccionar solicitudes y respuestas

Inspeccionar las solicitudes y respuestas te ayuda a diagnosticar problemas relacionados con los modelos. Por ejemplo, puedes evaluar el uso del contexto para verificar que te mantienes dentro de la ventana de contexto del modelo, o mostrar el cuerpo completo de una solicitud para controlar los parámetros que estás pasando a tus modelos al desarrollar con un framework.

En Docker Desktop, para inspeccionar las solicitudes y respuestas de cada modelo:

1. Selecciona **Models** y ve a la pestaña **Requests**. Esta vista muestra todas las solicitudes a todos los modelos:
   - La hora en que se envió la solicitud.
   - El nombre y la versión del modelo.
   - El prompt/solicitud.
   - El uso del contexto.
   - El tiempo que tardó en generarse la respuesta.
2. Selecciona una de las solicitudes para mostrar más detalles:
   - En la pestaña **Overview**, puedes ver el uso de tokens, los metadatos de la respuesta, la velocidad de generación y el prompt y respuesta reales.
   - En las pestañas **Request** y **Response**, puedes ver el payload JSON completo de la solicitud y de la respuesta.

> [!NOTE]
> También puedes mostrar las solicitudes de un modelo específico seleccionando un modelo y luego ve a la pestaña **Requests**.

## Páginas relacionadas

- [Referencia de la API](/ai/model-runner/api-reference/) - Documentación de la API compatible con OpenAI y Ollama
- [Opciones de configuración](/ai/model-runner/configuration/) - Tamaño del contexto y parámetros de tiempo de ejecución
- [Motores de inferencia](/ai/model-runner/inference-engines/) - Detalles de llama.cpp y vLLM
- [Integraciones de IDE](/ai/model-runner/ide-integrations/) - Conecta Cline, Continue, Cursor y más
- [Integración de Open WebUI](/ai/model-runner/openwebui-integration/) - Configura una interfaz de chat web
- [Modelos y Compose](/ai/compose/models-and-compose/) - Usa modelos en aplicaciones de Compose
- [Referencia de la CLI de Docker Model Runner](/reference/cli/docker/model) - Documentación completa de la CLI

