如何在 Docker 上部署支持 GPU 的 Ollama 服务

关键词:Docker、GPU、Ollama、部署、Docker Compose、nvidia-container-toolkit

在现代计算环境中,利用 GPU 进行计算加速变得越来越重要。本文将介绍如何在 Docker 上部署支持 GPU 的 Ollama 服务。我们将分别介绍使用 Docker Compose 文件和命令模式两种方法,并确保所有配置项都完整无误。

1. 安装 NVIDIA 容器工具

首先,需要确保你的系统已经安装了 NVIDIA 容器工具 nvidia-container-toolkit。这是让 Docker 容器访问 GPU 的关键步骤。

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

2. 使用 Docker Compose 文件部署 Ollama

以下是一个完整的 docker-compose.yml 文件示例,配置了 Ollama 服务以支持 GPU:

version: '3.8'
​
networks:
  1panel-network:
      external: true
​
services:
  ollama:
      container_name: my_ollama_container
      environment:
          OLLAMA_HOST: 0.0.0.0:11434
          OLLAMA_ORIGINS: '*'
      image: ollama/ollama:0.3.1
      labels:
          createdBy: Apps
      networks:
          - 1panel-network
      ports:
          - "192.168.1.100:8080:11434"
      restart: unless-stopped
      tty: true
      volumes:
          - ./data:/root/.ollama
      deploy:
          resources:
              reservations:
                  devices:
                      - capabilities: [gpu]
      runtime: nvidia

将上述 docker-compose.yml 文件内容保存到你的项目目录中,然后使用以下命令启动服务:

docker-compose up -d

3. 使用命令模式部署 Ollama

如果你更喜欢使用命令模式来部署 Ollama,可以使用以下命令:

docker run -d \
   --name my_ollama_container \
   --gpus all \
   --network 1panel-network \
   --env OLLAMA_HOST=0.0.0.0:11434 \
   --env OLLAMA_ORIGINS='*' \
   --label createdBy=Apps \
   -p 192.168.1.100:8080:11434 \
   --restart unless-stopped \
   -v ./data:/root/.ollama \
  ollama/ollama:0.3.1 \
   --tty true

4. 解释命令中的各个部分

  • docker run -d:以守护进程模式运行容器。

  • --name my_ollama_container:指定容器的名称。

  • --gpus all:使容器可以访问所有 GPU。

  • --network 1panel-network:将容器连接到 1panel-network 网络。

  • --env OLLAMA_HOST=0.0.0.0:11434:设置环境变量 OLLAMA_HOST

  • --env OLLAMA_ORIGINS='*':设置环境变量 OLLAMA_ORIGINS

  • --label createdBy=Apps:添加一个标签 createdBy=Apps

  • -p 192.168.1.100:8080:11434:将主机的端口映射到容器的端口。

  • --restart unless-stopped:设置容器自动重启策略,除非手动停止。

  • -v ./data:/root/.ollama:挂载本地目录 ./data 到容器内的 /root/.ollama

  • ollama/ollama:0.3.1:使用的镜像及其版本。

  • --tty true:分配一个伪终端。

5. 运行容器

执行上述命令后,Ollama 容器将启动并使用所有可用的 CPU、内存和 GPU 资源。如果在运行过程中遇到问题,可以检查以下内容:

  • 确保 NVIDIA 驱动已经正确安装,并且可以正常工作。

  • 使用 nvidia-smi 命令检查 GPU 状态,确保 GPU 处于可用状态。

  • 检查 Docker 容器日志,确保没有与 GPU 相关的错误信息。

通过这些步骤,你可以成功部署并运行支持 GPU 的 Ollama 服务。希望这篇教程对你有所帮助。如果有任何问题,请随时联系。