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



コメント