Principiante 14 minDocker

Ollama con Docker: instalación y primer modelo

Respuesta directa

Para ejecutar Ollama en Docker, inicia la imagen oficial ollama/ollama con un volumen para los modelos y el puerto 11434: docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama. Con una tarjeta NVIDIA, añade --gpus=all después de instalar el NVIDIA Container Toolkit. En macOS, Docker Desktop no ofrece acceso a la GPU. Publica el puerto en 127.0.0.1 si la API no debe estar accesible desde la red.

Ollama en un contenedor es un servicio aislado que se inicia, se actualiza y se elimina con un comando, sin tocar el sistema. Esta guía parte del comando oficial, añade la GPU NVIDIA, un primer modelo y un archivo Compose, y después aborda lo que los tutoriales omiten: quién puede acceder realmente al puerto 11434, qué versión fijar y por qué una GPU puede desaparecer durante el funcionamiento.

Por Mohamed Meguedmi·Actualización 2026-09-29·Probado en Windows, macOS y Linux

#Ollama en Docker: qué cambia realmente

La imagen oficial se llama ollama/ollama y se encuentra en Docker Hub, donde supera los 100 millones de descargas. Se basa en Ubuntu 24.04 y arranca directamente el servidor Ollama: la variable OLLAMA_HOST vale 0.0.0.0:11434, por lo que la API escucha en el puerto 11434 dentro del contenedor. Quedan cuatro decisiones por tomar: publicar este puerto en el host, montar un volumen en /root/.ollama para conservar los modelos, dar acceso a la GPU con --gpus=all si tienes una tarjeta NVIDIA y elegir la versión de la imagen. El contenedor arranca sin ningún modelo: los descargas después con el comando ollama, ejecutado dentro del contenedor. Estas cuatro decisiones se trasladan sin cambios a un archivo Compose.

Obtienes una instalación aislada, sin servicio del sistema, descrita en un solo archivo y fácil de hacer convivir con otros contenedores (interfaz web, base de datos vectorial, n8n). A cambio, tienes que configurar el acceso a la GPU, no dispones de acceso a la GPU en macOS y debes controlar la exposición de un puerto de red, un aspecto que la mayoría de los tutoriales omiten.

#Qué comando usar según tu hardware

El kit de IA Local

Tu ChatGPT privado y gratuito en tu máquina en 1 hora — LM Studio, Ollama, Open WebUI, tus documentos, sin nube.

  • Espacio en línea de por vida
  • PDF + archivos
  • Reembolsado 30 j

Una sola imagen cubre todos los casos; solo cambian las opciones de arranque según la GPU. La tabla recoge la documentación de Ollama e incluye la restricción que suele causar más problemas.

Opciones de docker run según la máquina (documentación Ollama, septiembre 2026)
MáquinaImagen y opcionesQué preparar en el hostLímite que debes conocer
Sin GPUollama/ollama, ninguna opciónDocker soloReserva esta vía para modelos pequeños
NVIDIA, Linuxollama/ollama con --gpus=allControlador 550 o superior, NVIDIA Container ToolkitTarjetas con capacidad de cómputo de 5.0 a 6.2: controlador 570 como mínimo
NVIDIA, WindowsMisma orden, Docker DesktopBackend WSL2, controlador compatible con WSL2, kernel WSL2 actualizadoSin WSL2, no hay acceso al GPU
AMD Radeon, Linuxollama/ollama:rocm con --device /dev/kfd --device /dev/driControlador AMD ROCm v7Tarjeta no incluida en la lista: HSA_OVERRIDE_GFX_VERSION, en pruebas
Otras GPU (Vulkan)ollama/ollama con --device /dev/kfd --device /dev/driNada: Vulkan está incluido en la imagenDesactivable con OLLAMA_VULKAN=0
NVIDIA Jetson--gpus=all y JETSON_JETPACK=5 o 6JetPack 5 o 6Ollama no adivina la versión
Mac (Docker Desktop)ollama/ollama, solo procesadorNadaSin passthrough de GPU: prefiere la instalación nativa

#Prerrequisitos

Docker
Docker Engine en Linux, Docker Desktop en Windows o macOS, con el comando docker compose para la sección 5.
Memoria
El peso del modelo, más el contexto, más un margen para el sistema. qwen3.5:9b pesa 6,6 GB: apunta a 16 GB de RAM para ejecutarlo en la CPU, no a 8.
Disco
20 GB libres para la imagen y uno o dos modelos.
GPU NVIDIA, opcional
El controlador se instala en el host, nunca dentro del contenedor; NVIDIA Container Toolkit sirve de puente.

#Procedimiento en cinco pasos

  1. 01
    Instalar Docker
    Docker Engine en Linux, Docker Desktop en Windows o macOS. El comando docker version debe responder tanto desde el cliente como desde el motor.
  2. 02
    Preparar el GPU NVIDIA (opcional)
    Instalar el NVIDIA Container Toolkit, ejecutar nvidia-ctk runtime configure --runtime=docker, reiniciar Docker, luego probar con docker run --rm --gpus all ubuntu nvidia-smi.
  3. 03
    Iniciar el contenedor
    docker run avec -d, --name ollama, -v ollama:/root/.ollama, -p 127.0.0.1:11434:11434 et, avec NVIDIA, --gpus=all.
  4. 04
    Descargar un modelo
    docker exec -it ollama ollama pull, suivi de qwen3.5:4b pour une carte de 8 Go, ou de qwen3.5:9b avec plus de marge.
  5. 05
    Verificar
    docker exec ollama ollama ps doit afficher 100% GPU dans la colonne PROCESSOR.

#1. El comando docker run

La documentación de Ollama da este comando para usar solo la CPU: docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama. La versión que aparece a continuación limita la publicación del puerto a la máquina local, por los motivos que se explican en la sección siguiente, y añade el reinicio automático.

Ollama con Docker, versión para CPU
docker run -d \
  --name ollama \
  -p 127.0.0.1:11434:11434 \
  -v ollama:/root/.ollama \
  --restart unless-stopped \
  ollama/ollama
-p 127.0.0.1:11434:11434
Publica el puerto 11434 del contenedor en el de la máquina, solo para la propia máquina.
-v ollama:/root/.ollama
Volumen con nombre montado donde Ollama almacena sus modelos. Se conserva incluso tras eliminar el contenedor.
--restart unless-stopped
Reinicia el contenedor después de un reinicio de Docker o de la máquina, a menos que se detenga manualmente.
Verificación
docker ps --filter name=ollama
curl http://localhost:11434/api/version

La respuesta es un objeto JSON con el número de versión, por ejemplo {"version":"0.34.4"}, la versión estable del 29 de septiembre de 2026.

#Puerto 11434: quién puede realmente acceder a él

Instalado nativamente, Ollama escucha por defecto en 127.0.0.1: solo la máquina puede hablar con él. En el contenedor, la imagen fija en cambio OLLAMA_HOST a 0.0.0.0:11434, de lo contrario el puerto sería inaccesible desde fuera. La protección depende por tanto de la forma en que publiques el puerto.

Según la documentación de Docker, publicar el puerto de un contenedor es poco seguro por defecto: queda accesible desde el exterior, no solo desde el host. El comando -p 11434:11434 lo vincula a todas las direcciones de la máquina. Además, la API local de Ollama no requiere autenticación: cualquiera que acceda al puerto puede listar tus modelos, descargar modelos u ocupar tu GPU.

!
En Ubuntu, ufw no te protege aquí
Docker redirige el tráfico de los puertos publicados antes de que llegue a las reglas de ufw. Una regla que bloquea el puerto 11434 se ignora; la documentación de Docker indica que se elude la configuración del cortafuegos. Publicar en 127.0.0.1 es la solución más sencilla.
-p 11434:11434
Todas las interfaces del equipo anfitrión: accesible desde la red local e incluso desde Internet.
-p 127.0.0.1:11434:11434
Solo en la máquina local. Esta es la opción predeterminada de esta guía.
-p 192.168.1.10:11434:11434
Una sola dirección de host; reemplázala por la tuya.

Para permitir deliberadamente el acceso a Ollama desde una red, coloca un proxy inverso con autenticación delante de Ollama, como explica la guía de seguridad citada al final de la página.

#Cambiar el puerto en el host

El puerto 11434 está ocupado si ya hay otra instancia en ejecución, a menudo la aplicación nativa. No toques el lado del contenedor: cambia solo el número de la izquierda. Con -p 127.0.0.1:11435:11434, tu máquina habla con Ollama en el puerto 11435; dentro del contenedor, nada cambia.

#Conectarse a Ollama desde otro contenedor

Dos servicios de un mismo archivo Compose comparten una red en la que se puede acceder a cada uno por el nombre de su servicio. Open WebUI utiliza así http://ollama:11434, sin publicar el puerto hacia el exterior. Si Ollama se ejecuta en el host, la documentación de Open WebUI señala el problema: escucha en 127.0.0.1 y no es accesible desde el contenedor. Hay que acceder a él mediante host.docker.internal y hacer que escuche en otra dirección.

#2. Activar el GPU NVIDIA

Docker no ve tu GPU por defecto. En el equipo anfitrión necesitas un controlador NVIDIA actualizado, el NVIDIA Container Toolkit y, después, la opción --gpus. Ollama requiere un controlador 550 o más reciente, y 570 para las tarjetas antiguas con capacidad de cómputo de 5.0 a 6.2. Los contenedores usan el controlador del equipo anfitrión; no incluyen uno propio.

NVIDIA Container Toolkit (Ubuntu, Debian)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
  | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -fsSL 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
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

El comando nvidia-ctk modifica el archivo /etc/docker/daemon.json para que Docker reconozca el runtime de NVIDIA, de ahí el reinicio. Para Fedora o RHEL, la documentación de Ollama proporciona la variante con yum o dnf. Antes de tocar Ollama, aísla el problema con un contenedor desechable: si falla, Ollama tampoco detectará tu GPU.

Prueba del passthrough de la GPU
docker run --rm --gpus all ubuntu nvidia-smi

Reinicia luego Ollama con acceso a GPU. El volumen se mantiene: los modelos ya descargados permanecen allí.

Ollama con Docker, versión para GPU NVIDIA
docker rm -f ollama

docker run -d \
  --name ollama \
  --gpus=all \
  -p 127.0.0.1:11434:11434 \
  -v ollama:/root/.ollama \
  --restart unless-stopped \
  ollama/ollama
!
Windows: es obligatorio el backend WSL2
Según la documentación de Docker, el acceso a la GPU en Docker Desktop solo está disponible en Windows con el backend WSL2. Se necesita un controlador NVIDIA compatible con WSL2, Windows actualizado y el último kernel de WSL2, que se obtiene con wsl --update. Para comparar con Ollama instalado en Windows, consulta la guía sobre WSL2 o instalación nativa.

Para una Radeon en Linux, la etiqueta rocm y los dispositivos /dev/kfd y /dev/dri sustituyen a --gpus; el controlador ROCm v7 debe instalarse en el host.

Ollama Docker, GPU AMD (ROCm)
docker run -d \
  --device /dev/kfd --device /dev/dri \
  -v ollama:/root/.ollama \
  -p 127.0.0.1:11434:11434 \
  --name ollama \
  ollama/ollama:rocm

#3. Primer modelo

El contenedor está funcionando, pero está vacío. El comando ollama está dentro del contenedor: se invoca con docker exec. Esta guía utiliza qwen3.5:9b, que la biblioteca Ollama describe con 6,6 GB, una ventana de 256K y soporte de texto e imagen.

Descargar un modelo
docker exec -it ollama ollama pull qwen3.5:9b

Estos 6,6 GB deben caber en memoria antes incluso de que el contexto entre en juego. En una tarjeta de 8 GB, el margen es estrecho: la variante 4B es la opción prudente.

Tamaños de las variantes qwen3.5 en la biblioteca Ollama (septiembre 2026)
TagPeso en discoPunto de referencia para elegir
qwen3.5:4b3,4 GBTarjeta de 8 GB, con margen para el contexto
qwen3.5:9b6,6 GBTarjeta de 12 GB o más, o 16 GB de RAM para ejecutar el modelo en CPU
qwen3.5:27b17 GBTarjeta de 24 GB, contexto moderado
qwen3.5:35b24 GBNo cabe en una tarjeta de 24 GB al incluir el contexto: parte del modelo se carga en la RAM del sistema.

Los marcadores de la última columna son órdenes de magnitud, no medidas: la posición real depende del contexto y de la cuantificación. Para hablar con el modelo, inicia ollama run dans el contenedor.

Conversación
docker exec -it ollama ollama run qwen3.5:9b

El uso habitual se realiza a través de la API HTTP: cualquier cliente se comunica con el contenedor como con una instalación nativa de Ollama, y la documentación especifica que la API acepta un subconjunto del formato OpenAI.

Llamada a API desde el host
curl http://localhost:11434/api/generate -d '{
  "model": "qwen3.5:9b",
  "prompt": "Explique la quantification Q4 en deux phrases.",
  "stream": false
}'
¿El modelo está en el GPU?
docker exec ollama ollama ps

En la columna PROCESSOR, 100% GPU significa que el modelo está íntegramente en la tarjeta, 100% CPU que está en la memoria del sistema y 48%/52% CPU/GPU que está repartido entre ambas. Este reparto ralentiza notablemente la generación: es mejor un modelo más pequeño que uno que no quepa íntegramente en la tarjeta.

#El contexto se configura en el contenedor

La ventana de contexto por defecto depende de la memoria: 4k con menos de 24 GiB de VRAM, 32k entre 24 y 48 GiB, 256k por encima. La documentación recomienda al menos 64.000 tokens para agentes y herramientas de código. Un contexto más grande consume más memoria: usa -e OLLAMA_CONTEXT_LENGTH=8192 en docker run, luego controla la columna CONTEXT de ollama ps.

#4. Volumen persistente: dónde viven tus modelos

El -v ollama:/root/.ollama crea un volumen Docker llamado ollama, distinto al contenedor. La documentación de Docker lo confirma: un volumen persiste tras eliminar el contenedor, lo que permite reemplazar la imagen sin tener que volver a descargar los modelos. El comando docker volume inspect ollama indica su Mountpoint, la ubicación de los archivos en el anfitrión.

En Linux, la instalación nativa guarda sus modelos en /usr/share/ollama/.ollama/models. Este directorio no tiene ningún vínculo con el volumen Docker: un modelo descargado por un lado no aparece por el otro.

→
Guardar modelos en un disco diferente
Reemplaza el volumen con nombre por un directorio del host: -v /mnt/ssd/ollama:/root/.ollama. Los archivos se pueden leer directamente, pero tú mismo gestionas los permisos del directorio.
Copia de seguridad del volumen
docker run --rm \
  -v ollama:/data \
  -v $(pwd):/backup \
  alpine tar czf /backup/ollama-models.tar.gz -C /data .

#5. Docker Compose: lo mismo, en un archivo

El archivo que aparece a continuación hace lo mismo que los comandos anteriores, se revisa de un vistazo y se puede versionar en git. Fija la versión de la imagen: reemplaza 0.34.4 por la última versión estable en el momento de leer esto.

compose.yaml
services:
  ollama:
    image: ollama/ollama:0.34.4
    container_name: ollama
    ports:
      - "127.0.0.1:11434:11434"
    volumes:
      - ollama:/root/.ollama
    restart: unless-stopped
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

volumes:
  ollama:

El bloque deploy reserva la GPU; según la documentación de Compose, el campo capabilities es obligatorio y, si falta, el despliegue falla. Si no tienes una GPU NVIDIA, elimina el bloque entero: el resto funciona con el procesador.

Ciclo de vida
docker compose up -d        # démarrer
docker compose logs -f      # suivre les logs
docker compose pull         # télécharger l'image du tag indiqué
docker compose down         # arrêter, volume conservé
docker compose down -v      # arrêter et supprimer le volume : efface tous les modèles
i
Cuidado con la opción -v
Según la documentación de Docker, docker compose down -v elimina los volúmenes con nombre declarados en el archivo. El volumen ollama es uno de ellos: tus modelos desaparecen.

#Actualizar Ollama sin perder tus modelos

A fecha de 29 de septiembre de 2026, la página de versiones de Ollama en GitHub marca la 0.34.4 como última versión estable, mientras que la 0.35.0 aparece como versión preliminar. Sin embargo, la etiqueta 0.35.0 ya existe en Docker Hub, entre etiquetas rc, de release candidate. Por tanto, fija un número de versión estable en lugar de seguir la última etiqueta publicada: la actualización llega cuando tú lo decides.

Con Compose, cambia el número en el archivo y luego ejecuta docker compose pull y docker compose up -d. Con docker run, descarga la nueva imagen, elimina el contenedor anterior y vuelve a ejecutar el mismo comando: mientras el volumen sea el mismo, los modelos se conservarán. Por último, comprueba la versión con curl http://localhost:11434/api/version.

#Docker o instalación nativa: la elección

Ambos métodos proporcionan el mismo servidor en el mismo puerto. La tabla se basa en la documentación de Ollama; no compara las velocidades porque no hay ninguna medición publicada que se pueda citar.

Docker y instalación nativa, criterio por criterio
CriterioOllama dentro de DockerOllama instalado nativamente
ActualizaciónCambiar la etiqueta y después ejecutar docker compose pullAutomático en macOS y Windows; en Linux, ejecutar nuevamente el script de instalación
ModelosVolumen de Docker o carpeta montada/usr/share/ollama/.ollama/models sous Linux
Registrosdocker logs ollamajournalctl -u ollama en Linux con systemd
Exposición a la redElección del -p (127.0.0.1 o todas las direcciones)127.0.0.1 por defecto, modificable con OLLAMA_HOST
GPU en MacSin accesoInstalación directa en la máquina

Elige Docker para agrupar varios servicios, fijar una versión o compartir un equipo. Elige la instalación nativa en un Mac o cuando Docker no aporte nada a un uso individual.


#Solución de problemas

could not select device driver "nvidia"
Falta el NVIDIA Container Toolkit, o Docker no se ha reiniciado después de ejecutar nvidia-ctk runtime configure. Vuelve a realizar la configuración, reinicia Docker y prueba de nuevo con docker run --rm --gpus all ubuntu nvidia-smi.
La GPU funciona, luego Ollama vuelve al procesador
Síntoma documentado: el registro indica fallos en la detección de la GPU tras un tiempo. Ollama recomienda desactivar la gestión de cgroup de systemd en Docker: añade "exec-opts": ["native.cgroupdriver=cgroupfs"] a /etc/docker/daemon.json y luego reinicia Docker.
Errores GPU 3, 46, 100 o 999
Recarga el controlador UVM con sudo rmmod nvidia_uvm y después sudo modprobe nvidia_uvm, o reinicia la máquina.
El puerto 11434 ya está en uso
Otra instancia está escuchando, a menudo la aplicación nativa. Deténla o publica en otro puerto con -p 127.0.0.1:11435:11434.
Respuestas truncadas
El contexto predeterminado depende de la VRAM. Añade -e OLLAMA_CONTEXT_LENGTH=8192 al iniciar el servicio y vigila el uso de memoria.
Descarga bloqueada tras un proxy
Pasa -e HTTPS_PROXY=https://proxy.example.com al contenedor. La documentación recomienda evitar HTTP_PROXY, ya que puede perturbar a los clientes.
Inaccesible desde la red local
Normal con -p 127.0.0.1:11434:11434. Abre el puerto solo si está protegido mediante autenticación.

#Preguntas frecuentes

FAQ
¿Cuál es la imagen oficial de Docker de Ollama?+
Es ollama/ollama en Docker Hub, publicada por Ollama. La etiqueta latest indica la versión actual, una etiqueta numérica como 0.34.4 fija una versión y el sufijo -rocm selecciona la imagen para GPU AMD. Para un uso a largo plazo, fija una etiqueta numérica estable en lugar de latest, para que una actualización solo llegue cuando tú lo decidas.
¿Puede Ollama usar la GPU dentro de Docker en Windows o en Mac?+
En Windows, sí para una tarjeta NVIDIA, con Docker Desktop usando WSL2 como backend, un controlador NVIDIA compatible con WSL2 y un kernel WSL2 actualizado (wsl --update). En macOS, no: Docker Desktop no ofrece passthrough ni emulación de GPU, por lo que el contenedor se ejecuta en el procesador. Para aprovechar el chip de Apple, instala Ollama directamente en la máquina.
¿Cómo actualizar Ollama en Docker sin perder los modelos?+
Los modelos se almacenan en el volumen, no en el contenedor. Con Compose, cambia el tag de la imagen y luego ejecuta docker compose pull y docker compose up -d. Con docker run, ejecuta docker pull, docker rm -f ollama y vuelve a ejecutar el mismo comando con el mismo volumen. Evita docker compose down -v, que también elimina los volúmenes con nombre definidos en el archivo.
¿Cómo conectar Open WebUI a Ollama con Docker Compose?+
Coloca los dos servicios en el mismo archivo Compose: comparten una red en la que cada uno es accesible por su nombre. En Open WebUI, la variable OLLAMA_BASE_URL toma el valor http://ollama:11434. Si Ollama se ejecuta en el host, utiliza host.docker.internal y comprueba que no escuche solo en 127.0.0.1. La guía sobre Open WebUI detalla la configuración.
¿La API de Ollama dentro de un contenedor está protegida por contraseña?+
No. La documentación de Ollama indica que la API local no requiere autenticación. Con -p 11434:11434, Docker abre el puerto en todas las interfaces del host, y un cortafuegos ufw no lo filtra. Publica el puerto en 127.0.0.1 o coloca un proxy inverso con autenticación delante de la API, como explica la guía de seguridad.

#Para ir más allá

Tienes un Ollama funcional, aislado, con un modelo en la GPU. Los siguientes pasos lógicos: una interfaz de conversación, medidas de seguridad antes de compartir el acceso por red y, después, una pila de producción.

¿Esta guía te ha ayudado?

¿Un comentario, un error, una precisión? Avísanos, eso mejora la guía para todos.