当前位置:首页 » 《关于电脑》 » 正文

使用Docker+ollama部署大模型

22 人参与  2024年10月17日 11:20  分类 : 《关于电脑》  评论

点击全文阅读


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

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

首先添加 Docker 的官方 GPG 密钥
# Add Docker's official GPG key:sudo apt-get updatesudo apt-get install ca-certificates curl gnupgsudo install -m 0755 -d /etc/apt/keyringscurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgsudo chmod a+r /etc/apt/keyrings/docker.gpg
sudo apt-get update:更新本地的包索引。这一步是为了确保系统知道最新的软件包信息,尤其是更新后的软件源列表sudo apt-get install ca-certificates curl gnupg:安装三个工具:                                   ca-certificates:确保系统具有最新的根证书,以验证 HTTPS 连接                              curl:用于从网络下载文件的命令行工具。                                                               gnupg:GNU Privacy Guard,用于处理 GPG 密钥和加密。sudo install -m 0755 -d /etc/apt/keyrings创建一个目录 /etc/apt/keyrings,用于存放 GPG 密钥。-m 0755 设置了该目录的权限为 0755(所有者可读写执行,组和其他用户可读和执行)curl -fsSL https://download.docker.com/linux/ubuntu/gpg:使用 curl 从 Docker 官方网站下载 GPG 密钥| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg:将下载的 GPG 密钥转换为 .gpg 格式并保存到 /etc/apt/keyrings/docker.gpg。gpg --dearmor 命令将 ASCII 格式的密钥转换为二进制格式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/nullsudo 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 repositorycurl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \    | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpgcurl -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.listsudo apt-get update# Install the NVIDIA Container Toolkit packagessudo 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=dockersudo 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 ollamadocker 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 命令启动了这个容器,并给它指定了名称 ollamaollama 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


点击全文阅读


本文链接:http://zhangshiyu.com/post/173011.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1