コミュニティソリューション

ZimaOSでFrigateからOllamaに接続できない:Dockerネットワークの修正

A Frigate GenAI setup could not initialize Ollama; the thread established that container-to-container reachability must be tested from the ZimaOS host first.

FrigateとOllamaを同じZimaOSホスト上の別々のDockerコンテナで実行している場合、Frigate内のlocalhost:11434はOllamaではなく、Frigateコンテナ自身を指します。両方のサービスを共有Dockerネットワークに接続してOllamaのサービス名を使用するか、FrigateからアクセスできるホストアドレスにOllamaのポートを公開してください。

元のスレッドでは、検証済みの最終構成には至りませんでした。ただし、正しい診断手順は確立されています。まずFrigateコンテナからネットワークに到達できることを確認し、その後Frigateのgenai:設定を確認します。現在のFrigateドキュメントでは、画像やイベントの説明にビジョン対応モデルも必要です。

コンテナ間でlocalhostが機能しない理由

通常、Dockerコンテナごとに独自のネットワーク名前空間があります。Frigate内で次のアドレスを指定すると:

http://localhost:11434

「Frigateコンテナ内のポート11434」を意味します。ZimaOSホストを意味するわけではなく、Ollamaコンテナに自動的に解決されることもありません。

推奨構成:共有Dockerネットワーク

FrigateとOllamaを同じユーザー定義Dockerネットワークに接続し、次のような安定したサービス名またはコンテナ名を使用します:

genai:
  provider: ollama
  base_url: http://ollama:11434
  model: qwen3-vl:4b

現在のFrigate生成AIガイドでは、Ollamaプロバイダーについて説明しており、GenAIによる説明には適切なビジョンモデルが必要です。

ステップ1:ZimaOSホストからコンテナとネットワークを確認する

ZimaOSホストのターミナルから実行してください。Frigateの内部から実行してはいけません。

docker ps --format 'table {.Names}	{.Image}	{.Networks}' | grep -Ei 'NAMES|frigate|ollama'

元のユーザーは誤ってFrigateコンテナ内でDockerコマンドを実行し、docker: not foundというエラーを受け取りました。これは想定された動作です。通常、コンテナにはホストのDocker CLIが含まれておらず、ホストのDockerを操作することもできません。

ステップ2:Frigate内部からOllamaをテストする

コンテナ名とネットワークが分かったら、実際のHTTP経路をテストします。ホストから次を実行してください:

docker exec -it frigate sh
wget -qO- http://ollama:11434/api/tags

レスポンスにOllamaのモデル一覧が表示されれば、ネットワークは機能しています。ollamaを解決できない場合は、コンテナが同じネットワークを共有していない可能性があります。名前解決はできても接続が拒否される場合は、Ollamaの待ち受け設定、バインド設定、ポートの状態を確認してください。

代替方法:ZimaOSホストのIPアドレスを使用する

Ollamaのポート11434をホストに公開している場合、Frigateでは次のようなLANから到達可能なホストアドレスを使用できます:

base_url: http://192.168.1.20:11434

この方法は簡単ですが、Dockerのサービスディスカバリーを使わず、ホスト経由でトラフィックをルーティングします。OllamaがFrigateコンテナから到達可能なインターフェースで実際に待ち受けていることを確認してください。

ビジョン対応のOllamaモデルを使用する

ネットワーク接続だけでは不十分です。Frigateの現在のGenAI機能は視覚的なコンテキストを送信するため、設定するモデルがビジョンに対応している必要があります。テキスト専用のOllamaモデルはAPIテストには応答できますが、カメラ映像のイベント説明には適していない場合があります。

どこでもhost.docker.internalを使用しない

host.docker.internalはDocker Desktopでは便利ですが、すべてのLinux Dockerホストで同じように動作するとは限りません。ZimaOSでは、共有ユーザー定義ネットワークとサービス名を使用する方が一般的に移植性に優れています。

ネットワークが機能した後にFrigateの設定を確認する

/api/tagsへのアクセスが成功してから、YAMLのインデント、プロバイダー名、モデル名、GenAI機能の設定を確認してください。Frigateを再起動し、プロバイダーの初期化に関するログを確認します。

Dockerネットワークガイドでは、コンテナネットワークの基本的な仕組みを詳しく説明しています。

よくある質問

Frigateからlocalhost:11434に接続できないのはなぜですか?

Frigate内のlocalhostはOllamaコンテナではなく、Frigateコンテナ自身を指すためです。

OllamaのURLとして何を使うのが最適ですか?

共有Dockerネットワーク上では、http://ollama:11434のようにOllamaのサービス名またはコンテナ名を使用します。

docker execでdockerが見つからないと表示されるのはなぜですか?

コンテナ内でDocker CLIを実行している可能性があります。Dockerの管理コマンドはZimaOSホストのターミナルから実行してください。

どのOllamaモデルでもFrigate GenAIで使えますか?

いいえ。現在のFrigateドキュメントによると、GenAIワークフローにはビジョン対応モデルが必要です。