Appearance
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-toolkit2. 配置 Docker
bash
# 配置 Docker 使用 NVIDIA 驱动
sudo nvidia-ctk runtime configure --runtime=docker
# 重启 Docker 服务
sudo systemctl restart docker3. 启动支持 NVIDIA GPU 的容器
bash
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollamaAMD 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/ollamaDocker 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解决方案:
- 确保主机安装了 NVIDIA 驱动
- 安装 NVIDIA Container Toolkit
- 重启 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/ollamaCPU 优化:
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 部署完成后,您可以:
现在您已经成功使用 Docker 部署了 Ollama!享受容器化带来的便利和一致性。