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.
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 doclingmásdocling convert file.pdf --to mdes 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.
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-cpudocker pull quay.io/docling-project/docling-serve-cu130:v1.18.0| Imagen | Cuándo | Arq / tamaño |
|---|---|---|
docling-serve / docling-serve-cpu | Servidores solo-CPU, portátiles, CI | amd64 + arm64, ~4,4 GB |
docling-serve-cu128 | GPU NVIDIA con CUDA 12.8 | amd64, ~11,4 GB |
docling-serve-cu130 | GPU NVIDIA con CUDA 13.0 | amd64 (+arm64), tamaño TBD |
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-servedocker run --gpus all -p 5001:5001 -e DOCLING_SERVE_ENABLE_UI=1 quay.io/docling-project/docling-serve-cu130:v1.18.0Alternativa: 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-uiPuertos, 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 conDOCLING_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).
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"}]
}'
Notas de configuración y despliegue
- Configura vía variables de entorno (ver
.env.exampley 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.mdson el punto de partida. - Fija tags en producción (
:v1.18.0, no:latest), sobre todo los CUDA.
Problemas comunes con contenedores
- El servidor no arranca — ver docling-serve no arranca: puerto en conflicto, falta el extra
[ui]o entrypoint erróneo. /ui404 — olvidasteDOCLING_SERVE_ENABLE_UI=1/--enable-ui.- La imagen GPU corre en CPU — el host necesita drivers NVIDIA + toolkit y
--gpus all; confirma dentro connvidia-smi. - Falla el pull de
:latestCUDA — esperado: las CUDA solo llevan tags de versión explícitos. - Primera petición lenta — se descargan pesos; las siguientes reutilizan la caché.
FAQ de Docker
¿Docker o pip install?
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?
¿Por qué no hay tag :latest CUDA?
:latest podría cambiar tu CUDA en silencio. Fija versiones explícitas como -cu130:v1.18.0.¿Dónde está la documentación API?
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