Dockerコンテナ内からホストOSのOllamaにアクセスする設定

LLM

DockerコンテナでOllamaを使ってごにょごにょする際に、コンテナ内にLLMをダウンロードするのはリソース消費の都合上やりたくないので、コンテナ内からLLMをストアしているホストOSのOllamaにアクセスするようにしていきます。

これからやること

  • dockerコンテナの設定
  • コンテナ起動と動作確認

前提条件

  • Docker Composeが使える状態
  • Ubuntu24.04.2 LTS (WSL2 on Windows11) を使っていきます
  • UbuntuにOllamaインストール済

dockerコンテナの設定

▼「docker-compose.yml」の例

※「extra_hosts」を追記します。

services:
  ollamaclient:
    container_name: ollamaclient
    build:
      context: .
      dockerfile: Dockerfile
    privileged: true
    extra_hosts:
      - host.docker.internal:host-gateway

▼「Dockerfile」の例

※OllamaのインストールとOllamaサーバの設定まで実施します。

FROM amazonlinux:latest

RUN dnf update \
    && dnf install \
    shadow-utils \
    tar \
    findutils \
    sudo \
    which \
    -y

# ユーザー作成
RUN useradd "ec2-user" && echo "ec2-user ALL=NOPASSWD: ALL" >> /etc/sudoers

# Ollama クライアントをインストール
RUN curl -fsSL https://ollama.com/install.sh | sh

# 環境変数で外部の Ollama サーバを指定
ENV OLLAMA_HOST=http://host.docker.internal:11434

CMD ["/bin/bash", "-c", "while true; do sleep 30; done"]

▼Docker Composeを使わないでコマンドラインでオプション指定する場合

--add-host=host.docker.internal:host-gateway

を追加して実行します。

▼上記「docker-compose.yml」でコンテナ構築&起動してみます

docker compose up -d

動作確認

▼コンテナにアクセスしてみます

docker compose exec -u ec2-user ollamaclient bash

▼curlでホストOS側のOllamaのAPIを叩いてみます

curl http://host.docker.internal:11434/v1/models

LLMリストのJSONが返ってきました。これで疎通確認ができました。

▼ollamaコマンドでLLMのリストを表示してみます

ollama ls

ホストOSのUbuntu側にストアされているLLMのリストが表示されました。

モデルを使ってチャットしてみます。

ollama run llama3.2:3b

コンテナ側からホストOSのLLMを使ってチャットをすることができました。

今度は、LLMを追加してみます。

ollama pull gemma3:1b

ホストOS側でLLMの一覧を表示してみます。

ollama ls

コンテナ側でpullしたLLMがホストOS側にストアされていることがわかります。

以上です。

  • 1
  • 0
  • 0
  • 0

コメント

タイトルとURLをコピーしました