以前、Ollama のバージョンを戻す方法 について記事を書きました。
僕が普段使っている OCR の環境で、Ollama を v0.34.1 にアップデートしたところ、glm-ocr を使った処理が正常に動かなくなったためです。
そのときは、v0.34.0 に戻すことで、とりあえず以前の環境に戻しました。
ただ、そこで別のことが気になりました。
Ollama は新しいバージョンが出ると、新しい機能や改善も気になります。
僕自身、Ollama を使っていろいろ試すのが好きなので、古いバージョンに戻したままにするのも、ちょっと違う気がします。
そこで、「最新版の Ollama は試したい。でも、今ちゃんと動いている環境も残しておきたい」と思いました。
そこで考えたのが、Ollama を別の環境で動かしてしまう方法です。
今回は、その方法として Docker を試してみることにしました。
Mac で普段使いするだけなら、僕は Ollama を Docker で動かす必要はあまりないと思っています。
でも、バージョンを分けて使いたい場合には、Docker が便利なのでは?
今回は、そんな実験です。
- なぜ Ollama を Docker で動かそうと思ったのか
- Ollama は Docker でも動かせる
- Docker なら Ollama のバージョンを固定できる
- 僕は Docker Compose で Ollama 0.34.0 を起動した
- Docker の Ollama が v0.34.0 になっているか確認する
- Docker の Ollama で glm-ocr を動かしてみる
- Docker 版の glm-ocr は、僕の環境では実用にならなかった
- Mac なら Docker 版 Ollama は必要なのか?
- Linux や Windows では Docker を使う意味も違ってくる
- それでも Docker を使う意味はありそう
- Ollama を Docker で動かしてみて思ったこと
- 参考情報・関連記事
なぜ Ollama を Docker で動かそうと思ったのか
きっかけは、前回の記事と同じです。
僕は普段、n8n と Ollama、glm-ocr を組み合わせた OCR のワークフローを使っています。
ところが Ollama v0.34.1 以降、この処理が正常に動作しなくなりました。
そこで、v0.34.0 に戻して運用していました。
Ollama のバージョンを戻す方法については、こちらの記事でまとめています。
今回は、この続きを考えるような形になりました。
v0.34.0 の環境は残しておきたい。
でも、Ollama の最新版も試してみたい。
それなら、
- Mac の Ollama アプリは最新版
- OCR 用の Ollama は v0.34.0
というように、環境を分けてしまえばいいのではないか。
そんな発想から、Docker を使ってみることにしました。
Ollama は Docker でも動かせる
Ollama には、公式の Docker イメージがあります。
公式ドキュメントでは、CPU だけで使う場合、次のようなコマンドでコンテナを起動する方法が案内されています。
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
Docker から Ollama を動かせること自体は、特別な裏技ではありません。
ただ、今回僕がやりたいのは、単純に Docker で Ollama を動かすことではありません。
特定のバージョンを固定して、Mac の通常版 Ollama とは別に動かすことです。
ここが今回の実験のポイントです。
Docker なら Ollama のバージョンを固定できる
Docker で Ollama を動かす場合、使用するイメージを指定できます。
例えば、
image: ollama/ollama:0.34.0
とすれば、v0.34.0 の Ollama を使えます。
これなら、Mac の Ollama アプリを新しいバージョンにしても、Docker 側では v0.34.0 をそのまま使えます。
今回の僕にとっては、ここが一番大きなメリットでした。
「最新版にしたくない」のではなく、「最新版も使いたいけど、今動いている環境も残しておきたい」からです。
この形なら、バージョンアップのたびに環境全体を入れ替える必要がありません。
僕は Docker Compose で Ollama 0.34.0 を起動した
今回は、Docker Compose を使って起動しました。
実際に使った設定(docker-compose.yml)はこんな感じです。
version: '3.8'
services:
ollama-old:
image: ollama/ollama:0.34.0
container_name: ollama-0-34-0
ports:
# ホスト側: コンテナ側
# Mac の Ollama アプリとポートが競合しないように変更
- "11435:11434"
volumes:
# Mac のアプリ版とは別のデータ領域を使用
- ollama_0_34_0_data:/root/.ollama
volumes:
ollama_0_34_0_data:
今回の設定では、いくつかポイントがあります。
ポートを 11435 に変更
Ollama は通常、11434 番ポートを使います。
ただ、Mac ではすでに通常版の Ollama を動かしています。
そこで、- “11435:11434” として、Mac 側のポートを 11435 にしました。
コンテナの中では 11434 番を使いながら、Mac 側からは 11435 番でアクセスします。
これなら、通常版 Ollama と Docker 版 Ollama を分けて動かせます。
モデル保存先も分ける
もうひとつは、Ollama のモデルデータです。
今回は、ollama_0_34_0_data:/root/.ollama として、Docker 側専用のボリュームを用意しました。
これによって、Mac の通常版 Ollama で使っているモデル環境とは分離しています。
つまり、Mac の Ollama と Docker の Ollama 0.34.0 で、それぞれ別の環境として管理できます。
Docker の Ollama が v0.34.0 になっているか確認する
コンテナを起動したら、まずバージョンを確認します。
今回のコンテナ名は ollama-0-34-0 なので、
docker exec -it ollama-0-34-0 ollama -v
を実行します。
ここで v0.34.0 が表示されれば、指定したバージョンで起動しています。

Mac には新しい Ollama が入っていても、Docker の中では v0.34.0。
これが今回やりたかった状態です。
Docker の Ollama で glm-ocr を動かしてみる
次に、Docker 側の Ollama で glm-ocr を動かしてみます。
モデルのダウンロードと実行は、
docker exec -it ollama-0-34-0 ollama run glm-ocr
でできます。

glm-ocr 自体は動きました。
「これなら、OCR 用の Ollama を Docker に移せるかな?」と思ったのですが、ここから少し想定外でした。
Docker 版の glm-ocr は、僕の環境では実用にならなかった
実際に OCR を試してみると、普段使っている環境よりも処理がかなり遅くなりました。
さらに、OCR の結果も安定しませんでした。
途中までしか読み込まないような感じで、僕が普段使っているレシート OCR には、ちょっと厳しい結果です。
「Docker にしたことで、バージョンを固定する」という目的は達成できました。
でも、普段使っている OCR 環境をそのまま Docker に移すという意味では、うまくいきませんでした。
原因については、今回は詳しく切り分けていません。
ただ、Ollama の公式 FAQ では、Docker での GPU アクセラレーションは Linux、または Windows + WSL2 が対象で、macOS の Docker Desktop では GPU パススルーがないため GPU アクセラレーションを利用できないと案内されています。
How do I use Ollama with GPU acceleration in Docker?
Ollama FAQ – How do I use Ollama with GPU acceleration in Docker?
The Ollama Docker container can be configured with GPU acceleration in Linux or Windows (with WSL2). This requires the nvidia-container-toolkit. See ollama/ollama for more details.GPU acceleration is not available for Docker Desktop in macOS due to the lack of GPU passthrough and emulation.
今回の Mac 環境でも、Docker 版 Ollama は CPU 中心の動作になっていた可能性があります。
Ollama では ollama ps を使うことで、モデルが CPU や GPU のどちらにロードされているか確認できます。
ただし、今回の OCR の精度低下まで「CPU だから」と単純に説明できるかどうかは、僕には確認できていません。
ここは、あくまで今回の実験で確認できた範囲として書いておきます。
Mac なら Docker 版 Ollama は必要なのか?
ここで改めて考えてみます。
僕自身、Mac で Ollama を使うだけなら、わざわざ Docker にする必要はないと思っています。
普段使いなら、Mac に Ollama をインストールして、そのまま使えばいい。
そのほうがシンプルです。
今回 Docker を使っているのは、「Docker のほうが便利だから」ではなく、「別バージョンを分けて持ちたかったから」です。
例えば、
- 通常版 → 最新版
- Docker 版 → v0.34.0
という形にしておけば、「新しいバージョンを試してみたい」と思ったときでも、以前の環境を残したまま試せます。
これは、AI の環境をいろいろ試す人にとっては、意外と便利かもしれません。
ただ、今回のように Docker 版で GPU を使えない Mac 環境では、僕の OCR 用途には向いていませんでした。
なので、僕としては、通常版の Ollama を普段使いするという、今までの方法に戻ることになりそうです。
Linux や Windows では Docker を使う意味も違ってくる
Ollama の公式 Docker ドキュメントを見ると、CPU だけでなく、NVIDIA GPU、AMD GPU、Vulkan などを使うための方法も案内されています。
特に Linux では、NVIDIA Container Toolkit を使って Docker コンテナから GPU を利用する構成が用意されています。
そのため、「Ollama を Docker で使う」という話は、Mac だけのものではありません。
ただ、今回の記事では Linux や Windows の詳しい設定までは扱いません。
僕自身が今回試しているのは、Mac mini M4 の環境だからです。
OS や GPU 構成が違えば、設定も変わります。
詳しい設定については、Ollama の公式 Docker ドキュメントを確認したほうが確実です。
それでも Docker を使う意味はありそう
今回の実験では、Docker 版 Ollama を OCR の常用環境にするところまではいきませんでした。
それでも、
- 複数の Ollama バージョンを使い分ける
- 特定のワークフロー用に環境を分ける
- 実験用の環境を別に用意する
- Open WebUI などと組み合わせる
- 特定のモデルを使う環境を固定する
といった使い方はありそうです。
特に僕の場合は、「このワークフローは、この Ollama バージョンで動かす」という考え方自体は、かなり面白いと思いました。
Ollama のように頻繁にアップデートされるソフトを使っていると、全部を同じ環境で動かすことが怖くなることがあります。
新しいものを試したい。
でも、動いているものは壊したくない。
そんなときに、環境を分けておくという考え方は役に立ちそうです。
Ollama を Docker で動かしてみて思ったこと
今回、Docker で Ollama を動かしてみた理由は、Docker そのものに興味があったからではありません。
Ollama v0.34.1 へのアップデートで、普段使っている glm-ocr の OCR 環境に問題が出たことがきっかけでした。
一度は v0.34.0 に戻しました。
でも、
- 最新版も試したい
- でも、今動いている環境も残しておきたい
という状態になりました。
そこで Docker を使ってみました。
結果として、Ollama を特定バージョンで動かす環境そのものは作れました。
ただ、Mac の Docker 環境では僕が普段使っている glm-ocr の OCR 処理が実用的な状態にならず、最終的にはこの方法をそのまま常用することにはしませんでした。
つまり今回の実験で分かったのは、Docker にすれば何でも解決するわけではないということです。
一方で、「最新版の環境」と「特定バージョンの環境」を分けて持つという考え方には、確かに使い道がありそうです。
僕の場合は、今後も AI 関連の実験を続けると思うので、こうした環境分離の方法は覚えておいて損はなさそうです。
今回はうまくいかなかった部分も含めて、Docker 版 Ollama を試した記録として残しておこうと思います。































