目次


1. Docker Model Runnerとは?

docker-model-runner

Docker Model Runner(DMR)は、手元の PC で LLM(大規模言語モデル)を簡単に動かせるようにする Docker の新機能です。Docker Hub や任意のOCI 準拠レジストリからモデルを取得して、OpenAI 互換 APIで即利用。GUI(Docker Desktop)と CLIのどちらからでも操作でき、モデルのパッケージングや共有まで一貫して扱えます。つまり「コンテナのようにモデルを引いて、走らせる」体験を提供します。

内部的には、初回にモデルをローカルへキャッシュし、推論要求時にオンデマンドでロード。未使用時はメモリからアンロードしてリソースを節約します。Windows/macOS/Linux に対応し、GPU も活用可能です(環境要件あり)。


2. なにが便利?— ビジネス視点の3つの効用

① コスト最適化
トークン課金の心配なく、試行回数を気にせず検証できます。モデルはローカルで動くため、開発・評価の反復がしやすい。

② プライバシー配慮
センシティブな社内文書や顧客データを外部に出さずに活用可能。オフライン運用も視野に入ります。

③ 組み込みのしやすさ
OpenAI 互換 APIを提供するため、既存の SDK やフレームワークをベース URL だけ切り替えて再利用できます。Compose や Testcontainers とも連携し、ローカル →CI/CDの移行もスムーズです。


3. はじめての人向け:5分で動かすQuick Start

前提:Docker Desktop(4.40+ for macOS / 4.41+ on Windows など)または Docker Engine をインストール。対応 GPU やドライバは要件に従ってください。

3-1. 機能を有効化(Docker Desktop)

Docker Desktop の Settings → AI → Enable Docker Model Runner をオンにするだけ。必要に応じてTCP アクセス(ポート指定)CORS 許可も設定できます。

CLI で有効化したい場合の例(macOS のベータ期記事の例示)
docker desktop enable model-runner --tcp 12434

3-2. モデルを取得(Pull)

超軽量モデルでお試し(SmolLM2 の量子化版):

docker model pull ai/smollm2:360M-Q4_K_M

Hugging Face の GGUF から直接 Pull することも可能です:

docker model pull hf.co/bartowski/Llama-3.2-1B-Instruct-GGUF

(初回はダウンロードに時間がかかりますが、ローカルキャッシュされます)。

3-3. 実行(Run)

コマンド一発で対話:

docker model run ai/smollm2:360M-Q4_K_M "こんにちは!ローカルLLMの始め方を教えて"

このrunコンテナ起動ではなく、Docker Desktop に常駐する推論サーバの API へ要求を送り、OpenAI 互換エンドポイントで処理されます。モデルは要求時に自動ロード → アイドルで自動アンロード


4. アプリ連携:OpenAI互換APIで“そのまま”つながる

Model Runner は、コンテナからは http://model-runner.docker.internal/engines/v1ホストプロセスからは http://localhost:12434/engines/v1(TCP 有効時の既定)でアクセスできます。OpenAI SDK や Spring AI、LangChain4j などからベース URL を差し替えるだけで利用可能です。

Java(Spring AI 相当のクライアント利用例)

OpenAiChatModel model = OpenAiChatModel.builder()
    .baseUrl("http://localhost:12434/engines/v1")
    .modelName("ai/smollm2:360M-Q4_K_M")
    .build();

String answer = model.chat("社内向けFAQボットの設計ポイントを3つ教えて");
System.out.println(answer);

Spring AI はlocalhost:12434/engines配下をベース URL に設定し、OpenAI 互換の Chat クライアントで DMR と連携できます。


  1. チーム開発:Docker Composeでモデルを“依存関係”として宣言

Compose では、サービスと同列に“モデル”を宣言できます。これにより、モデルの取得・起動・URL 注入まで自動化され、ポータビリティが高まります。

最小例(短い YAML):

services:
  chat-app:
    image: my-chat-app
    models:
      - llm

models:
  llm:
    model: ai/smollm2

環境変数の自動注入(短い例):

services:
  app:
    image: my-app
    models:
      - llm
      - embedding-model

models:
  llm:
    model: ai/smollm2
  embedding-model:
    model: ai/all-minilm

上記の短縮構文では LLM_URL / LLM_MODEL などがサービスへ自動注入され、アプリ側は環境変数を読むだけで接続できます。構成オプションとしてコンテキスト長ランタイムフラグの指定も可能です。


6. ユースケース:ローカル運用が光る場面

社内ドキュメント QA
RAG の試作やチューニングを社内ネットワーク内で閉じて実施。個人情報や設計書の扱いが安心。

顧客向けデモ・PoC
ネットワーク品質に左右されない即応デモ。小さなモデルで軽快に会話し、要件固めを高速化。

オフライン環境での支援
現場端末や閉域網でも知識検索・要約を提供。Compose と合わせると再現性の高い配布が可能。

アプリ開発の結合テスト
Testcontainers や Compose と組み合わせ、CI 上でも同じモデル指定でテスト。差分による不具合を低減。


7. 導入チェックリストとトラブル対策

対応プラットフォーム・GPU
Windows/macOS/Linux に対応。Windows はNVIDIA GPU & 指定ドライバ、Linux は NVIDIA ドライバ 575.57.08+など要件あり。Apple Silicon や一部モバイル GPU もサポート(機能差注意)。

モデルの配布・共有
GGUF モデルを OCI アーティファクトにパッケージしてレジストリへプッシュ可能。チーム配布が簡単。

ログとリクエスト可視化
Docker Desktop のRequests/Logs ビューdocker model logsトークン使用量・生成速度を確認し、品質とパフォーマンスの両面で改善。

よくあるエラー
docker: 'model' is not a docker command と出たら、CLI プラグインの配置を確認・修正(シンボリックリンク作成など)。


8. まとめ

  • Docker Model Runnerは、“モデルをコンテナのように扱う”感覚でローカル LLM を即稼働できる新基盤。OpenAI 互換 API・OCI アーティファクト対応・Compose 連携で実装から運用まで一直線
  • プライバシー配慮・コスト最適・スピード重視の現場にフィット。GUI/CLI の両対応で非エンジニアの検証にも優しい。
  • 今日から試すなら、Enable → Pull → Run → API 接続の 4 ステップ。Compose にモデルを依存関係として宣言すれば、チームでの再現性と配布性が劇的に向上。