windows11使用docker部署ollama调用底层GPU

本机环境Windows 11 家庭版:

设备名称 ZZNN-GEGEWU
处理器 Intel(R) Core(TM) i5-8300H CPU @ 2.30GHz 2.30 GHz
机带 RAM 24.0 GB (23.9 GB 可用)
设备 ID 8DA62972-C11C-4E08-9039-18D34E439F64
产品 ID 00326-10000-00000-AA043
系统类型 64 位操作系统, 基于 x64 的处理器
笔和触控 没有可用于此显示器的笔或触控输入

Docker Compose version v2.26.1

Docker version 26.1.1, build 4cf5afa

显卡驱动安装:https://www.nvidia.cn/Download/index.aspx?lang=cn

法1(若此种方法失败则需要使用法2)

先决条件

  • windows服务器需要安装完成显卡驱动 cuda可不安装

    https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/9/image_3681de459ca48bb2c659f234f6d2b879.png

部署调用底层GPU版 docker-compose文件如下:

备注:

  • 最新版docker-destop定义文件方式已发生改变需要去掉version: '3.8'
  • 并且建立环境变量定义项目名称环境变量为.env
    1
    COMPOSE_PROJECT_NAME=myproject
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# version: '3.8'
services:
ollama:
image: ollama/ollama:latest
restart: always
ports:
- 11434:11434
volumes:
- ./ollama:/root/.ollama
container_name: ollama
# pull_policy: if_not_present
# tty: true
restart: always
environment:
KEEP_GPUS_TIMEOUT: 40
TZ: Asia/Shanghai
OLLAMA_ORIGINS: "*"
OLLAMA_HOST: "0.0.0.0"
networks:
- ollama-docker
# GPU support
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities:
- gpu
open-webui:
image: registry.cn-hangzhou.aliyuncs.com/zznn/mycentos:open-webui-main
#ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: always
ports:
- "3000:8080"
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- open-webui:/app/backend/data

# open-webui:
# image: ghcr.io/open-webui/open-webui:main
# container_name: open-webui
# pull_policy: if_not_present
# volumes:
# - ./data:/app/backend/data
# depends_on:
# - ollama
# ports:
# - 3000:8080
# environment:
# - 'OLLAMA_BASE_URL=http://ollama:11434'
# - 'WEBUI_SECRET_KEY=sdjfvdklfbvkkgb'
# - 'HF_ENDPOINT=https://hf-mirror.com'
# extra_hosts:
# - host.docker.internal:host-gateway
# restart: unless-stopped
networks:
- ollama-docker

volumes:
open-webui:
networks:
ollama-docker:
external: false

备注:直接docker-compose up -d 即可 当提问AI时即可看到显卡正在使用中

效果:

https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/9/image_4884db6dbb46d13571e834ae4ea846db.png

法2 (需要开启科学上网)

参考:Windows 下让 Docker Desktop 关联上 NVidia GPU

(有时候法1会失败此时我们需要配置windows下的linux子系统中的ubuntu20.04)

先决条件:

wsl 安装Ubuntu20.04 安装完成后在ubuntu20.04中执行下方内容

1
2
3
# 安装ubuntu20.04的linux子系统
wsl --install Ubuntu-20.04
# 输入用户名及密码后即可登录操作

https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/9/image_a355e98355b8dd6acbbf926f50621dcd.png

1.安装配置:nvidia-container-toolkit

1
2
3
4
5
6
7
8
9
10
# 1.配置apt源
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
# 2.更新源
sudo apt-get update
# 3.安装工具包
sudo apt-get install -y nvidia-container-toolkit

2. 配置 Docker Daemon(本文到此成功 大多数到此步骤也能成功)

执行以下命令:

1
2
# 配置 Docker Daemonv
sudo nvidia-ctk runtime configure --runtime=docker

https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/9/image_1ccffe079986dbb376925fa3f44903f8.png

此时验证ollama能否正常使用GPU 若不能正常使用则继续下方操作

更好的办法是打开 Docker Desktop 如下操作之后(配置Docker Engine),再重启:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"args": []
}
},
"experimental": false
}


https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/9/image_8f0767c043af01a08fa4b37669543d18.png

构建完成后效果:

https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/9/image_4defc9e7779786f13126a5b0c95d6b82.png

本文参考:

windows 下 docker compose 安装 ollama 和 open-webui ,打造私有GPT_windows系统安装docker并部暑open webui