目录

用 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日