Ejecutar Docling con Docker (docling-serve)

Ejecuta la API HTTP oficial docling-serve como contenedor, sin entorno Python. Elige la imagen correcta (CPU frente a CUDA), publica el puerto 5001, activa la UI y prueba con curl. El despliegue avanzado vive en el proyecto oficial docling-serve.

1
Step 1

Cuándo Docker es (y no es) la respuesta

  • Usa Docker cuando una app, pipeline o equipo necesita Docling por HTTP (/v1/convert/source), despliegues reproducibles o aislamiento del Python del host.
  • Omite Docker para conversión local puntual: pip install docling más docling convert file.pdf --to md es más rápido (ver la visión general).
  • Las imágenes son grandes (4–11 GB): base/CPU ~4,4 GB, CUDA 12.8 ~11,4 GB. Descarga una vez, reutiliza siempre.
2
Step 2

Qué imagen descargar: CPU frente a CUDA

Todas las imágenes se publican en quay.io/docling-project/… y ghcr.io/docling-project/… para linux/amd64 (base/CPU además arm64). Sustituye docker por podman si es tu runtime. Regla de tags: las imágenes base/CPU usan latest y main; las CUDA no tienen latest a propósito (CUDA caduca con PyTorch). Fija siempre las CUDA explícitamente, p. ej. quay.io/docling-project/docling-serve-cu130:v1.18.0. Existe imagen ROCm pero no se publica (compílala local); se planean imágenes slim sin pesos precargados.

docker pull quay.io/docling-project/docling-serve-cpu
docker pull quay.io/docling-project/docling-serve-cu130:v1.18.0
ImagenCuándoArq / tamaño
docling-serve / docling-serve-cpuServidores solo-CPU, portátiles, CIamd64 + arm64, ~4,4 GB
docling-serve-cu128GPU NVIDIA con CUDA 12.8amd64, ~11,4 GB
docling-serve-cu130GPU NVIDIA con CUDA 13.0amd64 (+arm64), tamaño TBD
3
Step 3

Arranca el servidor (Docker / Podman)

CPU (lo común). El primer arranque descarga pesos al caché de la imagen: dale tiempo y disco. Despliegues con compose en docs/deployment.md. GPU CUDA (requiere nvidia-container-toolkit / --gpus).

podman run -p 5001:5001 -e DOCLING_SERVE_ENABLE_UI=1 quay.io/docling-project/docling-serve
docker run --gpus all -p 5001:5001 -e DOCLING_SERVE_ENABLE_UI=1 quay.io/docling-project/docling-serve-cu130:v1.18.0
4
Step 4

Alternativa: docling-serve vía pip

El mismo servidor sin contenedores: útil en una VM o para depurar.

pip install "docling-serve[ui]"
docling-serve run --enable-ui
5
Step 5

Puertos, docs, UI y health check

Si /docs carga, el servidor está sano. Si el puerto está ocupado, remapea con -p 5002:5001 y usa :5002 en las URL.

  • API base: http://127.0.0.1:5001
  • Docs API interactivas (Swagger): http://127.0.0.1:5001/docs
  • UI de pruebas: http://127.0.0.1:5001/ui (solo con DOCLING_SERVE_ENABLE_UI=1 / --enable-ui)
  • Endpoint estable de conversión: POST /v1/convert/source (API v1; con código antiguo ver notas de migración v1).
6
Step 6

Convierte tu primer documento vía API

La respuesta trae Markdown / JSON / HTML según las opciones pedidas. Explora cada opción en docs/usage.md y la referencia REST en los docs de docling-serve.

curl -X POST http://localhost:5001/v1/convert/source -H 'Content-Type: application/json' -d '{"sources": [{"kind": "http", "url": "https://arxiv.org/pdf/2501.17887"}]}'
curl -X 'POST' \
  'http://localhost:5001/v1/convert/source' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "sources": [{"kind": "http", "url": "https://arxiv.org/pdf/2501.17887"}]
  }'
7
Step 7

Notas de configuración y despliegue

  • Configura vía variables de entorno (ver .env.example y docs/configuration.md), p. ej. DOCLING_SERVE_ENABLE_UI=1.
  • Monta un volumen de caché para que los pesos sobrevivan reinicios; pon límites de memoria para PDF grandes (ver sin memoria).
  • Pon auth / TLS / límites en un reverse proxy para producción; los ejemplos compose de docs/deployment.md son el punto de partida.
  • Fija tags en producción (:v1.18.0, no :latest), sobre todo los CUDA.
8
Step 8

Problemas comunes con contenedores

  • El servidor no arranca — ver docling-serve no arranca: puerto en conflicto, falta el extra [ui] o entrypoint erróneo.
  • /ui 404 — olvidaste DOCLING_SERVE_ENABLE_UI=1 / --enable-ui.
  • La imagen GPU corre en CPU — el host necesita drivers NVIDIA + toolkit y --gpus all; confirma dentro con nvidia-smi.
  • Falla el pull de :latest CUDA — esperado: las CUDA solo llevan tags de versión explícitos.
  • Primera petición lenta — se descargan pesos; las siguientes reutilizan la caché.
9
Step 9

FAQ de Docker

¿Docker o pip install?
Pip (pip install docling) para conversión CLI local. Docker (docling-serve) cuando necesitas una API HTTP agnóstica para app o equipo.
¿Qué registry: quay.io o ghcr.io?
Ambos reflejan las mismas imágenes. Usa el más rápido o permitido en tu entorno.
¿Por qué no hay tag :latest CUDA?
Las versiones CUDA caducan a medida que PyTorch avanza, así que :latest podría cambiar tu CUDA en silencio. Fija versiones explícitas como -cu130:v1.18.0.
¿Dónde está la documentación API?
En vivo en tu servidor bajo /docs, más las guías de uso, configuración y despliegue.

El despliegue avanzado está documentado en el proyecto oficial docling-serve. Verificado con Docling v2.129.0 · Última comprobación 2026-09-22 · Fuente oficial