Independent guide — not affiliated with IBM or the Docling project. Every command verified on Docling 2.148.0.
  1. Home
  2. Install
  3. Docker
Docker

Docling in Docker — pick the right image

The Docling project publishes container images of docling-serve on quay.io and ghcr.io. We read their manifests directly: the CPU image is 2.2 GB to download, the GPU images 5–6 GB — and one tag points to a build from February.

Verified on Docling 2.148.0Updated 6 Nov 2026Includes our own measurements7 min read
In short
  • No GPU? Use quay.io/docling-project/docling-serve-cpu — 2.2 GB compressed instead of 5.0 GB.
  • CUDA images are tagged by version: use docling-serve-cu130:v1.38.2. docling-serve-cu128:latest is a stale v1.12.0 from 6 Feb 2026.
  • Images run docling-serve run on port 5001 as user 1001, with models already downloaded inside.
  • Enable the UI with -e DOCLING_SERVE_ENABLE_UI=1; add --gpus all for NVIDIA.

The images#

Download size of the official docling-serve imagesCompressed layers of v1.38.2 for linux/amd64, summed from the quay.io manifests. The CPU image is less than half the size of the others.
0246docling-serve-cpu2.22 GBdocling-serve5.04 GBdocling-serve-cu1305.04 GBdocling-serve-cu1285.99 GB

Measured by docling.org from quay.io/docling-project manifests on 27 Oct 2026.

Show data table
Download size of the official docling-serve images
GB
docling-serve-cpu2.22 GB
docling-serve5.04 GB
docling-serve-cu1305.04 GB
docling-serve-cu1285.99 GB
ImageForArchitecturesDownload (amd64)Tag to use
docling-serve-cpuServers without a GPUamd64, arm642.22 GBlatest or v1.38.2
docling-serveGeneral purpose (PyPI PyTorch)amd64, arm645.04 GBlatest or v1.38.2
docling-serve-cu130NVIDIA, CUDA 13.0amd64, arm645.04 GBv1.38.2 (no latest)
docling-serve-cu128NVIDIA, CUDA 12.8 (older drivers)amd64, arm645.99 GBv1.38.2 — avoid latest

All images are published under both quay.io/docling-project/ and ghcr.io/docling-project/. Sizes are compressed downloads we summed from the registry manifests; the README lists larger uncompressed sizes. An AMD ROCm image is supported but not published — the project explains how to build it.

Run it#

bashCPU
docker run -d --name docling -p 5001:5001 \
  -e DOCLING_SERVE_ENABLE_UI=1 \
  quay.io/docling-project/docling-serve-cpu:v1.38.2
# API http://localhost:5001 · docs /docs · UI /ui
bashNVIDIA GPU (needs the NVIDIA Container Toolkit)
docker run -d --name docling --gpus all -p 5001:5001 \
  quay.io/docling-project/docling-serve-cu130:v1.38.2
bashcheck it
curl http://localhost:5001/health
curl http://localhost:5001/version

What is inside#

Commanddocling-serve run (entrypoint container-entrypoint)
Ports5001 (API) and 8080 exposed
User1001 (non-root)
ModelsPre-downloaded; DOCLING_SERVE_ARTIFACTS_PATH=/opt/app-root/src/.cache/docling/models
ThreadsOMP_NUM_THREADS=4 — raise it on bigger machines

Read from the v1.38.2 image configuration. Because models are inside the image, containers start without internet access.

docker-compose#

yamlcompose.yaml
services:
  docling:
    image: quay.io/docling-project/docling-serve-cpu:v1.38.2
    ports:
      - "5001:5001"
    environment:
      DOCLING_SERVE_ENABLE_UI: "1"
      DOCLING_SERVE_API_KEY: "change-me"          # clients send X-Api-Key
      DOCLING_SERVE_MAX_SYNC_WAIT: "300"
      DOCLING_SERVE_ENG_LOC_NUM_WORKERS: "2"
      OMP_NUM_THREADS: "8"
    restart: unless-stopped

For a GPU, switch the image to a CUDA variant and add a device reservation (deploy.resources.reservations.devices with driver: nvidia). Every DOCLING_SERVE_* setting is explained in the docling-serve guide.

Using the docling CLI from the image#

The image's PATH includes the virtual environment that contains Docling, so you can replace the default command to convert files in a mounted folder:

bash
docker run --rm -v "$PWD:/data" --user "$(id -u)" \
  quay.io/docling-project/docling-serve-cpu:v1.38.2 \
  docling convert /data/report.pdf --to md --output /data

Running as your own user ID avoids permission problems on the mounted folder (the image's default user is 1001).

Building your own image#

If you only need the library, a slim image of your own is often smaller. Install the CPU build of PyTorch first and pre-download models at build time:

dockerfileDockerfile
FROM python:3.12-slim
ENV PIP_NO_CACHE_DIR=1 DOCLING_ARTIFACTS_PATH=/models
RUN pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu \
 && pip install "docling==2.148.0" \
 && docling-tools models download -o /models
WORKDIR /data
ENTRYPOINT ["docling"]
bash
docker build -t my-docling .
docker run --rm -v "$PWD:/data" my-docling convert report.pdf --to md --no-ocr

Frequently asked questions

Is there an official Docling Docker image?

Yes, for docling-serve: quay.io/docling-project/docling-serve (also on ghcr.io) with -cpu, -cu128 and -cu130 variants for linux/amd64 and linux/arm64. It exposes the REST API on port 5001 and includes the Docling library.

How big is the Docling Docker image?

For v1.38.2 on linux/amd64, the compressed download is 2.22 GB for docling-serve-cpu, 5.04 GB for docling-serve and docling-serve-cu130, and 5.99 GB for docling-serve-cu128 (summed from the registry manifests on 27 October 2026). Uncompressed sizes on disk are larger.

How do I use a GPU with the Docling container?

Install the NVIDIA Container Toolkit, use a CUDA image that matches your driver (for example docling-serve-cu130:v1.38.2) and start it with --gpus all.

Why is my docling-serve-cu128:latest so old?

Because CUDA images are meant to be pulled by version tag. On 27 October 2026, docling-serve-cu128:latest pointed to v1.12.0 built on 6 February 2026, while the current release was v1.38.2. Always pin an explicit version for CUDA images.

Sources