Skip to content

Docker 部署指南

本指南将帮助您使用 Docker 容器运行 Ollama,支持 CPU 和各种 GPU 配置。

基础部署

CPU 模式

最简单的部署方式是使用 CPU 模式:

bash
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

这个命令会:

  • 在后台运行容器(-d
  • 创建持久化存储卷(-v ollama:/root/.ollama
  • 映射端口 11434(-p 11434:11434
  • 命名容器为 ollama(--name ollama

GPU 加速部署

NVIDIA GPU 支持

1. 安装 NVIDIA Container Toolkit

使用 Apt(Ubuntu/Debian):

bash
# 配置仓库
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
    | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -fsSL 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
# 安装 NVIDIA Container Toolkit
sudo apt-get install -y nvidia-container-toolkit

使用 Yum/Dnf(RHEL/CentOS/Fedora):

bash
# 配置仓库
curl -fsSL https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo \
    | sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
# 安装 NVIDIA Container Toolkit
sudo yum install -y nvidia-container-toolkit

2. 配置 Docker

bash
# 配置 Docker 使用 NVIDIA 驱动
sudo nvidia-ctk runtime configure --runtime=docker
# 重启 Docker 服务
sudo systemctl restart docker

3. 启动支持 NVIDIA GPU 的容器

bash
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

AMD GPU 支持

对于 AMD GPU,使用 ROCm 标签:

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

这个命令会:

  • 挂载 AMD GPU 设备(--device /dev/kfd --device /dev/dri
  • 使用 ROCm 优化的镜像(ollama/ollama:rocm

运行模型

在容器中运行模型

容器启动后,您可以在容器内运行模型:

bash
docker exec -it ollama ollama run gemma3

从主机访问 API

您也可以从主机系统通过 API 访问:

bash
curl http://localhost:11434/api/generate -d '{
  "model": "gemma3",
  "prompt": "为什么天空是蓝色的?"
}'

高级配置

自定义环境变量

bash
docker run -d \
  --gpus=all \
  -v ollama:/root/.ollama \
  -p 11434:11434 \
  -e OLLAMA_DEBUG=1 \
  -e OLLAMA_HOST=0.0.0.0:11434 \
  --name ollama \
  ollama/ollama

挂载自定义模型目录

bash
docker run -d \
  --gpus=all \
  -v /path/to/your/models:/root/.ollama \
  -p 11434:11434 \
  --name ollama \
  ollama/ollama

限制资源使用

bash
docker run -d \
  --gpus=all \
  -v ollama:/root/.ollama \
  -p 11434:11434 \
  --memory=8g \
  --cpus=4 \
  --name ollama \
  ollama/ollama

Docker Compose 部署

创建 docker-compose.yml 文件:

CPU 版本

yaml
version: '3.8'
services:
  ollama:
    image: ollama/ollama
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - ollama:/root/.ollama
    restart: unless-stopped
volumes:
  ollama:

GPU 版本

yaml
version: '3.8'
services:
  ollama:
    image: ollama/ollama
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - ollama:/root/.ollama
    restart: unless-stopped
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
volumes:
  ollama:

AMD GPU 版本

yaml
version: '3.8'
services:
  ollama:
    image: ollama/ollama:rocm
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - ollama:/root/.ollama
    devices:
      - /dev/kfd
      - /dev/dri
    restart: unless-stopped
volumes:
  ollama:

启动服务:

bash
docker-compose up -d

代理配置

使用代理服务器

如果需要通过代理访问互联网下载模型:

bash
docker run -d \
  --gpus=all \
  -v ollama:/root/.ollama \
  -p 11434:11434 \
  -e HTTPS_PROXY=https://proxy.example.com \
  --name ollama \
  ollama/ollama

自定义证书

如果使用自签名证书,创建自定义 Dockerfile:

dockerfile
FROM ollama/ollama
COPY my-ca.pem /usr/local/share/ca-certificates/my-ca.crt
RUN update-ca-certificates

构建并运行:

bash
docker build -t ollama-with-ca .
docker run -d -e HTTPS_PROXY=https://my.proxy.example.com -p 11434:11434 ollama-with-ca

容器管理

查看容器状态

bash
# 查看运行中的容器
docker ps
# 查看容器日志
docker logs ollama
# 实时跟踪日志
docker logs -f ollama

进入容器

bash
# 进入容器 shell
docker exec -it ollama /bin/bash
# 直接运行 ollama 命令
docker exec -it ollama ollama list

停止和重启

bash
# 停止容器
docker stop ollama
# 启动容器
docker start ollama
# 重启容器
docker restart ollama

更新容器

bash
# 停止当前容器
docker stop ollama
# 删除容器(保留数据卷)
docker rm ollama
# 拉取最新镜像
docker pull ollama/ollama
# 启动新容器
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

网络配置

自定义网络

bash
# 创建自定义网络
docker network create ollama-network
# 在自定义网络中运行
docker run -d \
  --gpus=all \
  --network ollama-network \
  -v ollama:/root/.ollama \
  -p 11434:11434 \
  --name ollama \
  ollama/ollama

多容器部署

yaml
version: '3.8'
services:
  ollama:
    image: ollama/ollama
    container_name: ollama
    volumes:
      - ollama:/root/.ollama
    networks:
      - ollama-network
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
  nginx:
    image: nginx
    container_name: ollama-proxy
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    networks:
      - ollama-network
    depends_on:
      - ollama
networks:
  ollama-network:
    driver: bridge
volumes:
  ollama:

故障排除

常见问题

问题: GPU 未被识别

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver

解决方案:

  1. 确保主机安装了 NVIDIA 驱动
  2. 安装 NVIDIA Container Toolkit
  3. 重启 Docker 服务 问题: 权限被拒绝
Permission denied

解决方案: 确保 Docker 用户有权限访问 GPU 设备:

bash
sudo usermod -aG docker $USER

问题: 容器无法启动 解决方案: 检查容器日志:

bash
docker logs ollama

性能优化

内存优化:

bash
docker run -d \
  --gpus=all \
  -v ollama:/root/.ollama \
  -p 11434:11434 \
  --shm-size=2g \
  --name ollama \
  ollama/ollama

CPU 优化:

bash
docker run -d \
  --gpus=all \
  -v ollama:/root/.ollama \
  -p 11434:11434 \
  --cpuset-cpus="0-3" \
  --name ollama \
  ollama/ollama

安全考虑

网络安全

bash
# 仅绑定到本地接口
docker run -d \
  --gpus=all \
  -v ollama:/root/.ollama \
  -p 127.0.0.1:11434:11434 \
  --name ollama \
  ollama/ollama

用户权限

bash
# 以非 root 用户运行
docker run -d \
  --gpus=all \
  -v ollama:/root/.ollama \
  -p 11434:11434 \
  --user 1000:1000 \
  --name ollama \
  ollama/ollama

监控和日志

健康检查

yaml
version: '3.8'
services:
  ollama:
    image: ollama/ollama
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - ollama:/root/.ollama
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:11434/api/tags"]
      interval: 30s
      timeout: 10s
      retries: 3
    restart: unless-stopped
volumes:
  ollama:

日志配置

bash
docker run -d \
  --gpus=all \
  -v ollama:/root/.ollama \
  -p 11434:11434 \
  --log-driver json-file \
  --log-opt max-size=10m \
  --log-opt max-file=3 \
  --name ollama \
  ollama/ollama

下一步

Docker 部署完成后,您可以:

  1. 阅读 快速开始指南 学习基本用法
  2. 浏览 模型库 下载感兴趣的模型
  3. 查看 API 文档 了解编程接口
  4. 探索 GPU 支持文档 优化性能

现在您已经成功使用 Docker 部署了 Ollama!享受容器化带来的便利和一致性。

让大语言模型触手可及 - Get up and running with large language models