DockerでDocling運用 (docling-serve)

公式docling-serve HTTP APIをコンテナ運用。Python環境不要。正像選択 (CPUとCUDA)、5001番公開、UI有効化、curl試験。高度デプロイは公式docling-serve企画参照。

1
Step 1

Dockerが答えの場合・否の場合

  • Docker利用: アプリ・基盤・組織がHTTP (/v1/convert/source) 経由・再現デプロイ・ホストPython分離を求める場合。
  • Docker不要: 単発ローカル変換。pip install docling + docling convert file.pdf --to mdが高速 (概要参照)。
  • 像は巨大 (4〜11GB)。base/CPU約4.4GB、CUDA 12.8約11.4GB。一度取得し使い回す。
2
Step 2

像選択: CPU版とCUDA版

全像はquay.io/docling-project/…ghcr.io/docling-project/…linux/amd64向け (base/CPUはarm64追加)。手元がpodmanならdockerを置換。タグ則: base/CPU像はlatestmainあり。CUDA像にlatestなし (PyTorchと共にCUDA陳腐化のため)。CUDA像は必ず明示固定 (例quay.io/docling-project/docling-serve-cu130:v1.18.0)。ROCm像は存在するが未配布 (自前ビルド)。軽量像 (重みなし) は計画中。

docker pull quay.io/docling-project/docling-serve-cpu
docker pull quay.io/docling-project/docling-serve-cu130:v1.18.0
イメージ用途Arch・容量
docling-serve / docling-serve-cpuCPU専用サーバー・手元・CIamd64 + arm64、約4.4GB
docling-serve-cu128CUDA 12.8のNVIDIA GPUamd64、約11.4GB
docling-serve-cu130CUDA 13.0のNVIDIA GPUamd64 (+arm64)、容量TBD
3
Step 3

サーバー起動 (Docker / Podman)

CPU (最多)。 初回起動で重みを像内キャッシュへ。時間と容量を確保。compose運用はdocs/deployment.mdCUDA GPU (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

代替: pip版docling-serve

コンテナなしの同一サーバー。VMやデバッグに有用:

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

ポート・文書・UI・健全確認

/docsが描画されれば健全。ポート競合時は-p 5002:5001で付け替えURLも:5002に。

  • API基底: http://127.0.0.1:5001
  • 対話API文書 (Swagger): http://127.0.0.1:5001/docs
  • 試用UI: http://127.0.0.1:5001/ui (DOCLING_SERVE_ENABLE_UI=1 / --enable-ui時のみ)
  • 安定変換口: POST /v1/convert/source (v1 API。旧式利用者はv1移行記参照)。
6
Step 6

APIで初文書変換

応答は要求選択でMarkdown/JSON/HTML。各実行時選択肢はdocs/usage.mddocling-serve文書のREST解説で。

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

設定・運用記

  • env変数で設定 (.env.exampledocs/configuration.md参照)。例DOCLING_SERVE_ENABLE_UI=1
  • 再起動後も重み保持のためキャッシュ volume 化。巨大PDF用にメモリ上限 (メモリ不足参照)。
  • 本番の認証/TLS/制限はリバースプロキシ側。docs/deployment.mdのcompose例が出発点。
  • 本番タグ固定 (:v1.18.0等、:latest不可)。特にCUDA。
8
Step 8

頻出コンテナ問題

  • 起動せずdocling-serve起動せず参照。ポート競合・[ui]欠落・entrypoint誤り。
  • /ui 404DOCLING_SERVE_ENABLE_UI=1 / --enable-ui忘れ。
  • GPU像がCPU動作 — ホストにNVIDIAドライバ + toolkitと--gpus all要。内部でnvidia-smi確認。
  • CUDA版:latest取得失敗 — 仕様。CUDA像は明示版タグのみ。
  • 初回要求が遅い — 重み取得中。以後はキャッシュ。
9
Step 9

Docker FAQ

Dockerとpip導入どちら?
ローカルCLI変換はpip (pip install docling)。アプリ・組織用の中立HTTP APIが要る場合にDocker (docling-serve)。
quay.ioとghcr.ioどちら?
同一像の両鏡。高速・許可側を利用。
CUDA版:latestが無いのはなぜ?
PyTorch進行でCUDAが陳腐化するため、:latestは暗黙切替えの危険。 -cu130:v1.18.0等を明示固定。
API文書はどこ?
自サーバーの/docsに live 掲載。加えて上流の利用設定デプロイ解説。

高度デプロイは公式docling-serve企画に文書化。Docling v2.129.0で検証 · 最終確認 2026-09-22 · 公式ソース