目錄

用 Docker 執行 Ollama(NVIDIA、AMD GPU 與 Compose)

在伺服器上,用 Docker 執行 Ollama 方便管理與升級,也能和其他服務一起用 Compose 部署。如果你還不熟悉 Docker,可以先看 Docker 教學。

macOS 上的 Docker 無法使用 Apple GPU。在 Mac 上請直接安裝 Ollama 應用程式。

只用 CPU

docker run -d --name ollama \
  -v ollama:/root/.ollama \
  -p 11434:11434 \
  ollama/ollama
  • -v ollama:/root/.ollama:模型存在名為 ollama 的 Volume,容器重建也不會遺失。
  • -p 11434:11434:讓主機可以連到 API。

NVIDIA GPU

1. 安裝 NVIDIA Container Toolkit

主機需要先安裝 NVIDIA 驅動程式,再安裝 NVIDIA Container Toolkit(以 Ubuntu 為例,詳細步驟請參考 NVIDIA 官方文件):

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
  | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
  | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
  | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

2. 啟動容器

docker run -d --name ollama --gpus=all \
  -v ollama:/root/.ollama \
  -p 11434:11434 \
  --restart unless-stopped \
  ollama/ollama

確認 GPU 有被使用:

docker exec ollama nvidia-smi

AMD GPU

使用 rocm 版本的映像檔,並把裝置傳入容器:

docker run -d --name ollama \
  --device /dev/kfd --device /dev/dri \
  -v ollama:/root/.ollama \
  -p 11434:11434 \
  ollama/ollama:rocm

在容器中使用 Ollama

docker exec -it ollama ollama run qwen3:8b
docker exec ollama ollama pull nomic-embed-text
docker exec ollama ollama list

API 則和本機安裝一樣,在 http://localhost:11434。

環境變數

環境變數 用 -e 傳入。容器內的 OLLAMA_HOST 預設已經是 0.0.0.0,所以 -p 對應後主機就能連線:

docker run -d --gpus=all --name ollama \
  -e OLLAMA_CONTEXT_LENGTH=8192 \
  -e OLLAMA_KEEP_ALIVE=30m \
  -v ollama:/root/.ollama -p 127.0.0.1:11434:11434 \
  ollama/ollama

127.0.0.1:11434:11434 只允許本機連線,避免 API 暴露到網路上。

Docker Compose:Ollama + Open WebUI

services:
  ollama:
    image: ollama/ollama
    volumes:
      - ollama:/root/.ollama
    environment:
      OLLAMA_KEEP_ALIVE: 30m
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
    restart: unless-stopped

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    ports:
      - "3000:8080"
    environment:
      OLLAMA_BASE_URL: http://ollama:11434
    volumes:
      - open-webui:/app/backend/data
    depends_on:
      - ollama
    restart: unless-stopped

volumes:
  ollama:
  open-webui:
docker compose up -d
docker compose exec ollama ollama pull qwen3:8b

打開 http://localhost:3000 就能使用網頁介面。Ollama 沒有對外開放連接埠,只有 Open WebUI 能透過 Compose 網路連到它。沒有 NVIDIA 顯示卡時,刪除 deploy 區塊即可。

Open WebUI 的使用方式見 Open WebUI 網頁介面。

更新

docker pull ollama/ollama
docker rm -f ollama
# 用原本的 docker run 指令重新建立,模型在 Volume 中,不需要重新下載

使用 Compose 時:

docker compose pull
docker compose up -d

預先下載模型

在容器啟動時自動下載模型,可以在部署腳本中加上:

docker exec ollama ollama pull qwen3:8b

或把模型直接打包進自訂映像檔(映像檔會非常大,通常不建議)。

更新於 2026年10月12日