如何在 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 服务。希望这篇教程对你有所帮助。如果有任何问题,请随时联系。