Docling mit Docker betreiben (docling-serve)

Die offizielle docling-serve-HTTP-API als Container betreiben — keine Python-Umgebung nötig. Richtiges Image wählen (CPU vs. CUDA), Port 5001 publizieren, UI aktivieren und mit curl testen. Fortgeschrittenes Deployment lebt im offiziellen docling-serve-Projekt.

1
Step 1

Wann Docker die Antwort ist (und wann nicht)

  • Docker nutzen, wenn App, Pipeline oder Team Docling über HTTP (/v1/convert/source) brauchen, reproduzierbare Deployments oder Isolation vom Host-Python.
  • Kein Docker für einmalige lokale Umwandlung — pip install docling plus docling convert file.pdf --to md ist schneller (siehe Installationsübersicht).
  • Images sind groß (4–11 GB): Basis/CPU ca. 4,4 GB, CUDA 12.8 ca. 11,4 GB. Einmal ziehen, überall wiederverwenden.
2
Step 2

Welches Image ziehen: CPU vs. CUDA

Alle Images liegen auf quay.io/docling-project/… und ghcr.io/docling-project/… für linux/amd64 (Basis/CPU zusätzlich arm64). docker durch podman ersetzen, falls das die eigene Runtime ist. Tag-Regel: Basis/CPU-Images nutzen latest und main; CUDA-Images haben bewusst kein latest (CUDA veraltet mit PyTorch). CUDA-Images immer explizit pinnen, z. B. quay.io/docling-project/docling-serve-cu130:v1.18.0. Ein ROCm-Image existiert, wird aber nicht veröffentlicht (lokal bauen); schlanke Images ohne vorab geladene Gewichte sind geplant.

docker pull quay.io/docling-project/docling-serve-cpu
docker pull quay.io/docling-project/docling-serve-cu130:v1.18.0
ImageWannArch / Größe
docling-serve / docling-serve-cpuCPU-only-Server, Laptops, CIamd64 + arm64, ca. 4,4 GB
docling-serve-cu128NVIDIA-GPUs mit CUDA 12.8amd64, ca. 11,4 GB
docling-serve-cu130NVIDIA-GPUs mit CUDA 13.0amd64 (+arm64), Größe TBD
3
Step 3

Server starten (Docker / Podman)

CPU (häufigste): Erster Start lädt Modellgewichte in den Image-Cache — Zeit und Platte einplanen. Für Compose-Deployments siehe docs/deployment.md. CUDA-GPU (braucht 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

Alternative: docling-serve per pip

Derselbe Server ohne Container — nützlich auf einer VM oder zum Debuggen:

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

Ports, Docs, UI und Health-Check

Rendert /docs, ist der Server gesund. Bei belegtem Port mit -p 5002:5001 mappen und :5002 in den URLs nutzen.

  • API-Basis: http://127.0.0.1:5001
  • Interaktive API-Docs (Swagger): http://127.0.0.1:5001/docs
  • Playground-UI: http://127.0.0.1:5001/ui (nur mit DOCLING_SERVE_ENABLE_UI=1 / --enable-ui)
  • Stabiler Umwandlungs-Endpunkt: POST /v1/convert/source (v1-API — bei altem Code die v1-Migrationshinweise lesen).
6
Step 6

Erstes Dokument via API umwandeln

Die Antwort enthält Markdown / JSON / HTML je nach Request-Optionen. Alle Laufzeitoptionen in docs/usage.md und der REST-Referenz der docling-serve-Docs erkunden.

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

Konfiguration + Deployment-Hinweise

  • Per Env-Variablen konfigurieren (siehe .env.example und docs/configuration.md), z. B. DOCLING_SERVE_ENABLE_UI=1.
  • Cache-Volume mounten, damit Modellgewichte Neustarts überleben; Speicherlimits für große PDFs setzen (siehe Speicher voll).
  • Auth / TLS / Rate-Limits in einem Reverse-Proxy für Produktion; Startpunkt sind die Compose-Beispiele in docs/deployment.md.
  • Image-Tags in Produktion pinnen (:v1.18.0, nicht :latest) — besonders CUDA-Tags.
8
Step 8

Häufige Container-Probleme

  • Server startet nicht — siehe docling-serve startet nicht: Portkonflikt, fehlendes [ui]-Extra oder falscher Entrypoint.
  • /ui 404DOCLING_SERVE_ENABLE_UI=1 / --enable-ui vergessen.
  • GPU-Image läuft auf CPU — Host braucht NVIDIA-Treiber + Container-Toolkit und --gpus all; drin mit nvidia-smi bestätigen.
  • Pull von :latest eines CUDA-Images scheitert — erwartet: CUDA-Images tragen nur explizite Versionstags.
  • Erster Request langsam — Gewichte werden geladen; Folgerequests nutzen den Cache.
9
Step 9

Docker-FAQ

Docker oder pip-Installation?
Pip (pip install docling) für lokale CLI-Umwandlung. Docker (docling-serve), wenn eine sprachunabhängige HTTP-API für App oder Team nötig ist.
Welche Registry — quay.io oder ghcr.io?
Beide spiegeln dieselben Images. Nehmen, was schneller oder in der Umgebung erlaubt ist.
Warum gibt es kein :latest-CUDA-Tag?
CUDA-Versionen veralten, während PyTorch weiterzieht — :latest könnte still das CUDA wechseln. Explizite Versionen wie -cu130:v1.18.0 pinnen.
Wo steht die API-Doku?
Live auf dem eigenen Server unter /docs, plus Nutzung-, Konfigurations- und Deployment-Anleitungen upstream.

Fortgeschrittenes Deployment dokumentiert das offizielle docling-serve-Projekt. Verifiziert mit Docling v2.129.0 · Zuletzt geprüft 2026-09-22 · Offizielle Quelle