使用Docker+ollama部署大模型

Docker的安装----在 Ubuntu 系统上安装 Docker

一:配置系统的 APT 软件包管理器

首先添加 Docker 的官方 GPG 密钥
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
  1. sudo apt-get update:更新本地的包索引。这一步是为了确保系统知道最新的软件包信息,尤其是更新后的软件源列表
  2. sudo apt-get install ca-certificates curl gnupg:安装三个工具:                                   ca-certificates:确保系统具有最新的根证书,以验证 HTTPS 连接                              curl:用于从网络下载文件的命令行工具。                                                               gnupg:GNU Privacy Guard,用于处理 GPG 密钥和加密。
  3. sudo install -m 0755 -d /etc/apt/keyrings创建一个目录 /etc/apt/keyrings,用于存放 GPG 密钥。-m 0755 设置了该目录的权限为 0755(所有者可读写执行,组和其他用户可读和执行)
  4. curl -fsSL https://download.docker.com/linux/ubuntu/gpg:使用 curl 从 Docker 官方网站下载 GPG 密钥
  5. | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg:将下载的 GPG 密钥转换为 .gpg 格式并保存到 /etc/apt/keyrings/docker.gpg。gpg --dearmor 命令将 ASCII 格式的密钥转换为二进制格式
  6. sudo chmod a+r /etc/apt/keyrings/docker.gpg:设置密钥文件的权限,使得所有用户都可以读取这个文件。这样 APT 工具就可以使用这个密钥进行验证。
然后将 Docker 的软件源添加到 Apt 源
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
  • echo:生成 Docker 软件源的配置行。
    • [arch=$(dpkg --print-architecture)]:指定软件包的架构,$(dpkg --print-architecture) 动态获取系统架构,如 amd64。
    • signed-by=/etc/apt/keyrings/docker.gpg:指定用于验证软件包的 GPG 密钥文件。
    • https://download.docker.com/linux/ubuntu:Docker 官方软件源的 URL。
    • $(. /etc/os-release && echo "$VERSION_CODENAME"):动态获取当前 Ubuntu 版本的代号(如 focal、jammy)。
    • stable:指定安装的软件包版本为稳定版。
  • | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null:将生成的软件源配置写入到 /etc/apt/sources.list.d/docker.list 文件中。tee 命令将输出同时写入到文件和标准输出,> /dev/null 是为了忽略输出内容

二:安装 Docker 的相关软件包

 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

三:验证 Docker 安装

安装完 Docker 后,可以运行一个简单的测试容器来验证 Docker 是否正常工作。

sudo docker run hello-world

如果看到来自 Hello from Docker!消息,表明已经成功安装并启动了 Docker Engine

四:运行 Docker 命令时不需要使用 sudo

Docker 的守护进程(daemon)以 root 用户身份运行,并通过 Unix 套接字(/var/run/docker.sock)与客户端(如 docker 命令行工具)通信。默认情况下,这个套接字的权限设置为只有 root 用户可以访问,因此普通用户需要使用 sudo 来运行 Docker 命令。

为了让普通用户可以不使用 sudo 运行 Docker 命令,需要将这些用户添加到一个特殊的用户组——docker 组中。这样,当 Docker 守护进程启动时,它会将这个 Unix 套接字的权限设置为 docker 组可读写,从而允许 docker 组中的用户运行 Docker 命令而无需 sudo。

  • 创建 Docker 用户组

    首先,创建一个名为 docker 的用户组。如果这个组已经存在,这一步会被忽略。

    sudo groupadd docker
    
  • 将当前用户添加到 Docker 组

    将当前用户添加到 docker 组,以便该用户可以执行 Docker 命令。

    sudo gpasswd -a $USER docker
    
  • 激活组变更

    使用 newgrp 命令使组变更立即生效

    newgrp docker
    
  • 测试 Docker 命令

    运行 docker run hello-world 命令,检查是否可以在没有 sudo 的情况下成功运行 Docker 命令。

    docker run hello-world
    

Ollama Docker image的配置

配置和安装 NVIDIA Container Toolkit

这是一个用于在 Docker 中支持 NVIDIA GPU 的工具

# Configure the repository
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
sudo apt-get update

# Install the NVIDIA Container Toolkit packages
sudo apt-get install -y nvidia-container-toolkit
代码解析----Install with Apt
1. 配置 NVIDIA 软件源

下载和安装 GPG 密钥

curl -fsSL <https://nvidia.github.io/libnvidia-container/gpgkey> \\
    | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

这条命令从 NVIDIA 的 GitHub 页面下载 GPG 密钥,用于验证软件包的来源和完整性。并且将 ASCII 格式的 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.安装 NVIDIA Container Toolkit 软件包
sudo apt-get install -y nvidia-container-toolkit

配置 Docker 以支持 NVIDIA GPU 

sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

启动 Docker 容器

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

  • docker run
    • 这是启动一个新容器的 Docker 命令。
  • d
    • 表示以分离模式(后台模式)运行容器。容器会在后台运行,而不会占用当前终端。
  • -gpus=all
    • 允许容器访问主机上所有可用的 NVIDIA GPU。这个选项要求 Docker 配置为使用 NVIDIA 容器工具包(NVIDIA Container Toolkit)。
  • v ollama:/root/.ollama
    • 将主机上的卷 ollama 挂载到容器的 /root/.ollama 路径。卷用于持久化数据,即使容器被删除,数据也会保留在卷中。
  • p 11434:11434
    • 将主机的端口 11434 映射到容器的端口 11434。这使得主机上的端口 11434 可以用于访问容器内的服务。
  • -name ollama
    • 给容器指定名称 ollama。这个名称可以用来引用和管理该容器。
  • ollama/ollama
    • 要使用的 Docker 镜像。这里指定的是 ollama/ollama 镜像,通常是从 Docker Hub 获取的镜像。

 获取和管理 Docker 镜像相关操作(optional)

  • docker images 用于查看本地镜像及其详细信息。
  • docker pull <image> 用于从镜像仓库拉取新镜像。
  • docker inspect <image> 用于查看镜像的详细配置。

镜像拉取机制

当执行 docker run 命令时,如果 Docker 在本地找不到指定的镜像,Docker 会自动尝试从配置的镜像仓库中拉取这个镜像

查看容器状态

docker ps

配置和管理容器相关的操作(optional)

  • 查看容器状态

    docker ps
    
  • 停止和删除容器

    docker stop ollama
    docker rm ollama
    
  • 在容器内执行命令

    docker exec -it ollama <command>
    

进入容器运行模型

刚才使用ollama/ollama镜像创建了一个叫做ollama的容器,并绑定了端口 11434

现在我想使用这个容器来运行llama3模型

docker exec -it ollama ollama run llama3
  • docker exec 命令
    • docker exec 是用来在一个已经运行的容器内执行命令的。它允许你在容器内部启动一个新的进程,通常用于调试和管理。
  • it 选项
    • i(interactive): 使容器的标准输入保持打开,以便你可以与容器内的进程进行交互。
    • t(tty): 为容器分配一个伪终端,这使得你可以以终端模式运行命令。
  • ollama
    • 这是正在运行的容器的名称。刚刚通过 docker run 命令启动了这个容器,并给它指定了名称 ollama
  • ollama run llama3
    • 这是在容器内执行的命令。它调用了 ollama 应用程序,并加载了 llama3 模型。

现在就可以和模型对话了

或者也可以尝试其他的模型library

参考:

https://hub.docker.com/r/ollama/ollama

https://medium.com/devops-technical-notes-and-manuals/how-to-install-docker-on-ubuntu-22-04-b771fe57f3d2

### 使用DockerOllama在Windows上部署DeepSeek #### 三、环境准备 为了确保顺利运行,在Windows环境中需先安装Docker Desktop。这一步骤至关重要,因为后续操作均依赖于Docker容器化平台来管理应用及其服务[^2]。 #### 四、安装并配置Docker Desktop 对于尚未安装Docker Desktop的情况,建议访问[Docker官方网站](https://www.docker.com/products/docker-desktop/)获取最新版本,并遵循官方指南完成安装过程。安装完成后启动Docker Desktop应用程序,确认其正常工作后再继续下一步的操作。 #### 五、安装Ollama 针对Windows系统的用户来说,可以通过Chocolatey包管理器快速安装Ollama工具链: ```powershell choco install ollama-cli -y ``` 此命令会自动处理所有必要的依赖关系,简化了手动设置流程中的复杂度。安装完毕之后可通过`ollama --version`指令检验是否成功安装Ollama CLI客户端[^1]。 #### 六、验证Ollama安装情况 执行如下PowerShell脚本来测试刚刚安装好的Ollama能否正常使用: ```powershell $VersionInfo = (ollama version).Trim() if ($VersionInfo.StartsWith('v')) { Write-Host "Ollama 已正确安装, 版本号为 $VersionInfo" } else { Write-Error "未能识别到有效的 Ollama 安装!" } ``` 这段代码片段能够帮助判断当前计算机上的Ollama是否处于可用状态,并显示具体的版本信息作为参考依据。 #### 七、拉取DeepSeek镜像至本地仓库 利用预先设定好的Ollama工具集可以方便地从远程服务器下载所需的AI模型文件夹,这里以DeepSeek为例展示具体做法: ```bash ollama pull deepseek-r1 ``` 上述命令将会把指定名称的预训练模型加载进来以便稍后调用使用。值得注意的是,默认情况下这些资源会被保存在一个特定位置供以后查询或更新之用。 #### 八、启动Open Web UI界面 为了让开发者更直观便捷地管理和监控整个项目进展状况,推荐采用图形化的Web控制面板形式来进行交互式开发体验。有两种方式可供选择——一种是借助Python虚拟环境下pip工具直接安装;另一种则是更加简便高效的途径即运用前面提到过的Docker技术栈创建独立的服务实例: ##### 方法A: Python Pip Install 按照提示依次输入下列语句即可顺利完成软件包导入任务: ```bash pip install open-webui ``` 随后依照屏幕指示进一步完善其余参数选项直至结束为止。 ##### 方法B: Docker Compose Setup 如果倾向于第二种解决方案,则只需复制粘贴下方给出的一行简单的docker-compose.yml定义文档内容,再配合相应端口映射规则就能立即激活在线可视化编辑功能区: ```yaml version: '3' services: webui: image: ghcr.io/your-repo/openwebui:latest ports: - "7860:7860" ``` 接着打开终端窗口键入`docker compose up -d`让后台持续运行该进程而不影响其他日常活动。 #### 九、常见错误排查技巧 在整个搭建过程中难免会出现各种意外情形阻碍进度推进,以下是几种典型的故障现象连同对应的修复措施汇总表: | 错误描述 | 解决办法 | | --- | --- | | `docker.exe not found` | 确认已经正确设置了系统变量PATH指向Docker可执行程序所在目录 | | `failed to connect...` | 尝试重启电脑使新安装的应用生效或者检查防火墙设置允许相关网络连接请求通过 | | `image cannot be pulled` | 清理缓存重新尝试pull动作,亦或是切换不同的源地址重试 | 以上就是关于怎样在Windows平台上结合DockerOllama两大利器共同打造属于自己的个性化DeepSeek AI服务平台的整体介绍。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值