13分で読めます 2026年8月22日

OllamaをDockerで動かす:CPU・GPU・ボリューム・API確認

モデルファイルを失ったり、ホストとコンテナのネットワークを混同したり、ローカルAPIを誤って公開したりせずにOllamaをDockerで動かす実践ガイドです。

Odysseus AI Wiki編集チーム
Odysseus AI Wiki編集チーム
独立した技術ドキュメントと検証

要点: OllamaはDockerで動かせます。安定した構成は、/root/.ollama用の名前付きボリューム、必要な場合だけ公開するポート、ホストに合わせたCPUまたはGPU用コマンドです。別のアプリを接続する前に、コンテナ、/api/tags、1回のモデルリクエストを確認してください。

OllamaをDockerで動かすという言葉には、通常3つの判断が含まれます。モデルファイルをどこに置くか、コンテナがホストや別のサービスへどう接続するか、CPUと利用可能なGPUのどちらを使うかです。まずは最小構成から始めましょう。公式Ollamaイメージを名前付きボリュームで起動し、ローカルAPIを確認してから、GPUオプションや別のアプリを追加します。

OllamaをDockerで動かすと何が変わるか

通常のOllamaはローカルサービスとして動きます。コマンドで実行環境を起動し、モデルファイルはマシン上に置かれ、クライアントはポート11434を呼び出します。Dockerはこのサービスを独自のファイルシステム、プロセス名前空間、ネットワーク規則、ライフサイクルを持つコンテナで包みます。再現性の高いデプロイに便利ですが、/root/.ollamaをボリュームで永続化しないと、コンテナ内で取得したモデルがコンテナ削除時に消えることがあります。

そのため、Dockerコマンドが動くだけでは構成は完成しません。Dockerを唯一のOllama実行環境にするのか、ホストアプリや別コンテナから呼び出すのか、モデルのダウンロードをアップグレード後も残すのかを決めます。OpenCode、MCPホスト、Web UI、リモートクライアントを追加する前に、境界を見える形にしておきましょう。

コンテナの寿命とモデルの保存先は別です

コンテナを削除しても安全なのは、モデルディレクトリが書き込み可能なコンテナ層の外にある場合だけです。名前付きボリュームまたは意図したバインドマウントが、Ollama Docker構成を永続化します。


CPU・NVIDIA GPU・AMD GPUを選ぶ

ネットワーク、ボリューム、新しいホストを検証する段階では、まずCPU構成を使います。変更点が少なく、モデルの読み込み時間や応答速度を比べる基準になります。APIが動いたら、別の環境からコピーした不明なDockerオプションを足すのではなく、ホストに合ったアクセラレーター用コマンドへ切り替えてください。

NVIDIAコンテナでは、通常、ホスト側のドライバーとNVIDIA Container Toolkitが必要です。AMD構成は異なるイメージタグやデバイス設定を使うことがあり、対応状況はOS、ランタイム、現在のOllama案内に依存します。GPUは最適化の層として扱い、エンドポイント、ボリュームの場所、基本的なヘルス確認は変えないようにします。

Dockerが利用できるか確認
docker version
ホストからNVIDIA GPUが見えるか確認
docker run --rm --gpus=all nvidia/cuda:12.0.0-base-ubuntu22.04 nvidia-smi
経路 使う場面 重要な確認
CPU 最も単純な基準を作りたい、または対応GPUがない 性能調整の前にAPIとモデル応答を確認する
NVIDIA GPU ホストドライバーとNVIDIA Container Toolkitが動作している 大きなモデルを取得する前にDockerからGPUが見えるか確認する
AMD GPU ホストとOllamaイメージが必要なROCm経路に対応している 対象ホストの現在のイメージとデバイス要件に従う
ホストとコンテナ 別サービスがDockerネットワーク経由でOllamaを呼び出す ホストのループバックではなくネットワーク内のサービス名を使う

モデルを永続化するボリュームを作る

名前付きボリュームはOllama Docker構成の初期値として扱いやすい方法です。保存場所をDockerが管理し、モデルファイルを手動で移さずにコンテナを交換できます。公式イメージはOllamaのデータを/root/.ollamaに保存するため、そこへ一貫してボリュームをマウントしてください。初回起動とアップグレードで別のボリュームを作ると、意図せず新しいモデルライブラリになります。

バインドマウントは、ディスク使用量を確認したい場合、決めたホストディレクトリをバックアップしたい場合、特定のドライブへモデルを置きたい場合に便利です。一方で権限やパスの判断が増えます。初回デプロイでは、名前付きボリュームのほうが説明しやすく壊しにくいでしょう。

ボリュームはバックアップではありません

Dockerボリュームはコンテナ交換からモデルファイルを守りますが、自動的に二重化されるわけではありません。モデルライブラリが重要なら、意図的にバックアップまたは再構築の手順を用意してください。

名前付きボリュームを作成
docker volume create ollama-data
永続ストレージ付きのCPUコンテナを起動
docker run -d --name ollama -p 11434:11434 -v ollama-data:/root/.ollama ollama/ollama
コンテナ内へモデルを取得
docker exec -it ollama ollama pull <model-name>

コンテナを起動してAPIを確認する

docker runがコンテナIDを返したら、大きなモデルを取得する前に状態を確認します。docker psでプロセスが動いているかを確認し、docker logsでポート、権限、ランタイムのエラーを調べます。その後、ホストから/api/tagsを呼び出します。tagsの応答が成功しても、すべてのモデルが読み込めることや、すべてのクライアントに利用権限があることまでは証明しません。

2つ目の確認として、小さなモデルで1回リクエストします。これにより、HTTPリスナーが生きているだけの状態と、モデル経路まで動作している状態を分けられます。APIは応答するのにモデルリクエストが失敗する場合は、ネットワーク設定を変える前に、モデル名、空き容量、メモリ、コンテナログを確認してください。

  1. プロセスを確認

    コンテナがUp状態で、公開ポートが意図したものになっていることを確認します。

  2. エンドポイントを確認

    ポート11434を公開した同じマシンから/api/tagsを呼び出し、ステータスコードを記録します。

  3. モデルを確認

    小さなモデルを取得または使用し、エディターやエージェントを接続する前に安全なプロンプトを1回実行します。

コンテナの状態を確認
docker ps --filter name=ollama
直近のログを読む
docker logs ollama --tail 100
ローカルAPIを確認
curl http://127.0.0.1:11434/api/tags
コンテナ内のモデル一覧を表示
docker exec -it ollama ollama list

localhostを混同せずにホストアプリを接続する

正しいOllama URLはクライアントの実行場所で決まります。Dockerがポートを公開している同じホスト上のデスクトップアプリは、通常http://127.0.0.1:11434を呼び出せます。同じDockerネットワークの別コンテナは、Composeのサービス名とポート、たとえばhttp://ollama:11434を使います。コンテナ内の127.0.0.1はそのコンテナ自身を指し、Windows、macOS、Linuxのホストを自動的に指すわけではありません。

リモートクライアントには、明示的に保護したアドレスとファイアウォール規則を使います。テストアプリを接続するためだけにポート11434をインターネットへ公開しないでください。リモートエンドポイントが必要なら、経路、認証またはプライベートネットワークの境界、アクセスを許可するモデルサービスを記録します。

クライアントの場所 一般的なエンドポイント よくある間違い
ホストのデスクトップ http://127.0.0.1:11434 ホストアプリからコンテナのサービス名を使う
別のComposeサービス http://ollama:11434 呼び出し元コンテナ自身を指すlocalhostを使う
別のマシン プライベートでファイアウォール保護されたホストアドレス 認証なしのAPIを公開インターフェースへバインドする
Odysseusまたはエディター アプリのプロバイダー設定が要求するエンドポイント 基本API確認が通る前にエンドポイントを変更する

モデル、コンテキスト、公開範囲を安全に保つ

Dockerに入れたからといって、Ollamaサービスが自動的に非公開になるわけではありません。コマンドやホストの既定値によっては、公開ポートがすべてのインターフェースへバインドされます。ホストだけで試す場合は、他のマシンからのアクセスが不要なら-p 127.0.0.1:11434:11434のようなループバックバインドを優先します。Composeサービスが内部からAPIを使う場合は、プライベートネットワークに置き、必要な場合以外はホストポートを公開しません。

モデルのコンテキスト長、同時実行数、GPUメモリは、コンテナが使うRAMやVRAMの量を変えます。一度に1つの変数だけを増やし、docker stats、ホストメモリ、モデルの応答を観察してください。秘密情報をイメージ、シェル履歴、スクリーンショット、バージョン管理されたComposeファイルへ入れないでください。ローカルモデルのエンドポイントと外部検索ツールでは、プライバシーの境界が異なります。

確認項目 重要な理由 安全側の初期値
ポートバインド APIへ到達できるインターフェースを決める ホストだけのテストではループバックにバインドする
ボリュームの場所 コンテナ交換後もモデルが残るかを決める 名前付きボリュームを1つ使い、場所を記録する
コンテキストと同時実行 リクエスト中のメモリ使用量を増やすことがある 小さく始め、上限を増やす前に計測する
外部ツール プロンプトや取得内容をホスト外へ送る可能性がある プロバイダーを確認し、ツール権限を絞る

ヘルス、GPU、ボリューム、APIの障害を切り分ける

Ollama Docker構成が失敗したら、層を1つずつ変更します。まずDocker自体が簡単なコンテナを起動できるかを確認し、次にOllamaコンテナが動き続けるかを調べます。その後にボリューム、API、モデル、最後にクライアントアプリを確認します。エラーのたびにコマンド全体を入れ替えると、どの境界で失敗したのか分からなくなります。

GPUの失敗は、Ollama APIよりもホスト側のランタイムに原因があることが多いです。GPUが渡されていない、ドライバーが互換性を持たない、選んだイメージがホストに合わない、といった場合、コンテナが/api/tagsに応答していてもCPUを使っていることがあります。モデルが再作成後に見つからない場合は、再取得する前にdocker inspectの結果とマウント先を比較してください。

コンテナの削除とボリュームの削除は同じではありません

最後のコマンドが削除するのはコンテナだけです。モデルファイルが不要になった、またはバックアップ済みだと確認するまで、docker volume rm ollama-dataを実行しないでください。

マウントとポートを調べる
docker inspect ollama
コンテナのリソース使用量を見る
docker stats ollama
コンテナだけ停止して削除
docker stop ollama && docker rm ollama
症状 疑う境界 次の確認
コンテナがすぐ終了する イメージ、コマンド、権限、ランタイム docker logs ollamaと終了コードを確認する
API接続が拒否される ポートバインドまたはプロセスの状態 docker ps、公開ポート、/api/tagsを確認する
モデルが消えた 誤った、または存在しないボリューム docker inspectのマウントと/root/.ollamaを比較する
GPUオプションが失敗する ホストドライバーまたはコンテナランタイム Ollamaの前に最小のGPUテストを実行する
ホストでは動くがコンテナでは動かない ネットワーク名前空間 localhostをComposeのサービス名に置き換える
リクエストのメモリ使用量が大きい コンテキスト、同時実行、モデルサイズ 設定を1つ下げ、ホストとコンテナの指標を見る

OllamaをDockerで動かすときのよくある質問

はい。公式のOllama Docker手順では、サービスをコンテナで起動します。実際に重要なのは、イメージ、/root/.ollamaボリューム、CPUまたはアクセラレーターのランタイム、クライアントが使うエンドポイントです。

名前付きボリュームを作り、公式イメージをポート11434で起動し、/root/.ollamaへボリュームをマウントします。その後、モデルを取得する前にdocker psと/api/tagsを確認してください。アクセラレーター固有のコマンドは現在の公式ドキュメントを使います。

共有ストレージを設計することはできますが、2つの実行環境を同じ書き込み可能なモデルディレクトリへ気軽に向けないでください。単一の所有者、明確なバックアップ計画、文書化した移行手順がロックや権限の問題を減らします。

構成を確認する段階ではCPUを基準にします。NVIDIAまたはAMDは、ホストドライバー、コンテナランタイム、イメージ、デバイス設定が一緒に対応している場合だけ使います。GPU経路は推論を速くしても、ボリュームやAPI確認の手順を変えないはずです。

2つのクライアントが異なるネットワーク名前空間を使うためです。ポート公開時のホストは127.0.0.1:11434を使えますが、別のComposeサービスは通常、http://ollama:11434のようにOllamaのサービス名を使います。

実行しているOllamaバージョンの公式案内にある環境変数とイメージ設定を使い、同じモデルボリュームでコンテナを作り直します。上限は少しずつ増やし、メモリ使用量を観察してください。コンテキストを大きくするとRAMやVRAMが大幅に必要になることがあります。

非公開だと決めつけないでください。ホストのバインドアドレスとファイアウォールを確認します。ホストだけで使うならポートをループバックへバインドし、サービス間通信ならプライベートDockerネットワークを優先して不要なホスト公開を避けます。

公式リファレンス

  1. Ollama Dockerドキュメント - 公式コンテナイメージとDockerデプロイの案内
  2. Ollama APIドキュメント - 公式エンドポイントとリクエストのリファレンス
  3. Docker ComposeのGPUサポート - GPU予約とComposeに関する公式案内

関連するローカルAI設定ガイド

最終更新:2026年8月22日

ホームへ戻る