GPU机器安装docker
由于访问大模型的服务采用容器部署,因此需要在服务器上安装docker
以及支持GPU的docker插件nvidia-docker
nvidia-docker简介
Nvidia-Docker 是一个用于在 Docker 容器中轻松管理和运行 NVIDIA GPU 加速应用程序的工具。它简化了在容器中使用 NVIDIA GPU 的过程,使得开发者可以更便捷地部署和运行需要 GPU 计算能力的应用程序,如深度学习、机器学习、科学计算等。
离线安装
1、确定操作系统版本
uname -a#输出
Linux PretroX 5.15.0-67-generic #74~20.04.1-Ubuntu SMP Wed Feb 22 14:52:34 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Linux
:
- 表示操作系统的内核名称,这里是 Linux 内核。
PretroX
:
- 这是系统的主机名(Hostname),即这台计算机的名称。在这个例子中,主机名为
PretroX
。
5.15.0-67-generic
:
- 这是当前运行的 Linux 内核版本。具体来说:
5.15.0
是内核的主版本号。67
是内核的修订版本号,表示这是第 67 次修订。generic
表示这是一个通用的内核版本,适用于大多数桌面和服务器环境。
#74~20.04.1-Ubuntu
:
- 这部分提供了关于内核构建的更多信息:
74
是构建号(Build Number),表示这是第 74 次构建。~20.04.1
表示这个内核是基于 Ubuntu 20.04.1 版本开发的。波浪号~
通常表示这是一个开发分支或预发布版本。Ubuntu
表示这个内核是为 Ubuntu 操作系统构建的。
SMP Wed Feb 22 14:52:34 UTC 2023
:
SMP
表示对称多处理(Symmetric Multi-Processing),意味着内核支持多核处理器。Wed Feb 22 14:52:34 UTC 2023
是内核编译的日期和时间,即 2023 年 2 月 22 日星期三,14:52:34 UTC 时间。
x86_64 x86_64 x86_64
:
- 这部分描述了系统的架构:
x86_64
表示这是一个 64 位的 x86 架构处理器。重复三次可能是显示格式的问题,通常只出现一次x86_64
即可表示系统架构。
GNU/Linux
:
- 表示操作系统是基于 GNU 工具链和 Linux 内核构建的。GNU 提供了许多基础工具和库,与 Linux 内核结合形成了完整的操作系统。
2、去docker
官网下载对应的离线安装包
官网下载地址:https://download.docker.com/linux/ 。下级目录为操作系统:
centos/
debian/
fedora/
raspbian/
rhel/
sles/
static/
ubuntu/
根据第1步查看的操作系统,则确定安装包路径:https://download.docker.com/linux/ubuntu/dists/ 。下级目录为版本号。ubuntu的版本号用的是名字,参考:https://wiki.ubuntu.com/Releases。有以下对应关系:
版本名称:Artful Aardvark,版本号:17.10
版本名称:Bionic Beaver,版本号:18.04 LTS
版本名称:Cosmic Cuttlefish,版本号:18.10
版本名称:Disco Dingo,版本号:19.04
版本名称:Eoan Ermine,版本号:19.10
版本名称:Focal Fossa,版本号:20.04 LTS
版本名称:Groovy Gorilla,版本号:20.10
版本名称:Hirsute Hippo,版本号:21.04
版本名称:Impish Indri,版本号:21.10
版本名称:Jammy Jellyfish,版本号:22.04 LTS
版本名称:Kinetic Kudu,版本号:22.10
版本名称:Lunar Lobster,版本号:23.04
版本名称:Mantic Minotaur,版本号:23.10
版本名称:Noble Narwhal,版本号:24.04 LTS(预计)
版本名称:Trusty Tahr,版本号:14.04 LTS
版本名称:Xenial Xerus,版本号:16.04 LTS
版本名称:Yakkety Yak,版本号:16.10
版本名称:Zesty Zapus,版本号:17.04
3、安装docker
3.1、确定目录
根据版本,进入对应的目录:20.04
则对应 focal。 操作系统架构为x86_64,但是官网没有,则可以使用amd64的,是兼容的。
则url为:https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/
3.2、确定docker版本
docker需要安装很多组件,但是此目录下每个组件都有多个版本,不知道具体的版本对应,则需要去docker官网查找对应版本。
docker安装以下组件:
containerd
:独立的容器运行时(container runtime),负责管理容器的生命周期,包括启动、停止和监控容器。它是 Docker 的核心组件之一,提供了底层的容器管理功能。docker-buildx
:Docker 官方提供的构建插件,用于增强 Docker 的构建功能docker-ce-cli
:Docker 社区版(Community Edition)的命令行界面(CLI)工具,用于与 Docker 守护进程(daemon)进行交互,执行各种容器管理操作。docker-ce-rootless-extras
:是 Docker 社区版的附加组件,支持以非 root 用户身份运行 Docker 守护进程和客户端,增强安全性。docker-ce
:Docker 社区版的完整安装包,包含 Docker 的核心组件,如 Docker 守护进程、Docker CLI 等,提供完整的容器管理功能。docker-compose-plugin
: Docker 官方提供的插件,用于扩展 Docker Compose 的功能,支持更复杂的编排需求和高级特性。docker-scan-plugin
:Docker 官方提供的安全扫描插件,用于检测 Docker 镜像中的漏洞和安全问题。
选择一个版本,例如:20.10,进入docke官网:https://docs.docker.com/engine/release-notes/20.10/
查找当前版本支持的每个组件的对应版本:
20.10.24
Updates
Update Go runtime to 1.19.7. # go的,不用管
Update Docker Buildx to v0.10.4. #buildx
Update containerd to v1.6.20. # containerd
Update runc to v1.1.5.
在本页面搜索其他组件的版本。
Update Docker Compose to v2.15.1. #docker-compose-plugin
docker-ce-cli
和 docker-ce
保持版本一致,与选择的版本一致。
3.3、下载 *.deb
文件,放到服务器上,执行以下命令:
dpkg -i *.deb# 安装完后验证:
docker -vsystemctl status docker
一般对应的版本的安装包,不会再提示缺少依赖了。如果仍然缺少,则可以降低版本。
根据需要配置/etc/docker/daemon.json
,然后重启docker。
4、去官网下载nvidia-docker
的离线安装包
https://mirror.cs.uchicago.edu/nvidia-docker/libnvidia-container/stable/ubuntu20.04/amd64/
在里面选择一个匹配的版本。然后去官网下载压缩包:https://github.com/NVIDIA/nvidia-container-toolkit/releases
libnvidia-container
有以下组件:
- libnvidia-container 是基础库,提供了与 NVIDIA GPU 交互的核心功能。
- libnvidia-container-tools 和 nvidia-container-runtime 利用
libnvidia-container
提供的功能,简化了容器化环境中的 GPU 配置和管理。 - nvidia-container-toolkit 将这些组件整合在一起,提供了一整套工具和脚本,方便用户安装和配置。
- nvidia-docker2 则是在 Docker 生态系统中应用这些工具,使用户能够通过简单的 Docker 命令使用 GPU 加速。
- libnvidia-container1 :
libnvidia-container
的一个具体实现版本,通常以.so
文件的形式存在,供应用程序动态链接使用。
选择一个版本,然后下载对应的压缩包
#这是 deb 格式的 amd64架构的。
nvidia-container-toolkit_1.17.5_deb_amd64.tar.gz
5、安装nvidia-docker
dpkg -i *.deb
# 安装之后,会提示是否覆盖 daemon.json,会在里面加一些配置。
#安装完成后,重启 docker
systemctl restart docker
离线部署建议直接通过实用性角度进行验证。
docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smi