如何在GPU上安装使用Docker
这里以Debian操作系统为例
Debian Docker 安装
Debian Docker 安装 | 菜鸟教程
卸载旧版本
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
使用官方安装脚本自动安装
curl -fsSL https://get.docker.com -o get-docker.shsudo sh get-docker.sh
遇到报错
这块是cuda仓库的问题,阿里的处理了
apt命令解释
sudo apt update
更新本地软件包列表,让系统知道有哪些软件可以安装、更新、升级(只更新列表,不安装升级)
sudo apt upgrade
系统才会真正去下载并安装新版本
Nvidia Toolkit安装
NVIDIA 为容器环境(如 Docker)开发的工具集,让容器里的应用可以使用主机的 NVIDIA GPU 进行加速计算,比如用来训练深度学习模型
Installing the NVIDIA Container Toolkit — NVIDIA Container Toolkit
Installing the NVIDIA Container Toolkit — NVIDIA Container Toolkit
# 安装必要的依赖
sudo apt-get install -y curl ca-certificates gnupg
# 清理旧的密钥和仓库配置(如有)
sudo rm -f /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo rm -f /etc/apt/trusted.gpg.d/nvidia-container-toolkit-keyring.gpg
# 添加NVIDIA官方GPG密钥(使用新的推荐方式)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
# 添加适用于Debian Bookworm的仓库,这个结果可能不行,没测是啥
curl -s -L https://nvidia.github.io/libnvidia-container/debian/libnvidia-container.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 rm /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo nano /etc/apt/sources.list.d/nvidia-container-toolkit.list
在文件中添加以下内容(适用于Debian Bookworm):deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://nvidia.github.io/libnvidia-container/stable/debian11/amd64 /
deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://nvidia.github.io/libnvidia-container/experimental/debian11/amd64 /
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
sudo chmod 644 /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
本来是两行
deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://nvidia.github.io/libnvidia-container/stable/debian11/amd64 / deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://nvidia.github.io/libnvidia-container/experimental/debian11/amd64 /
但下面不稳定,所以注释掉
Docker使用
Overview — NVIDIA Container Toolkit
镜像拉取
当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它
docker pull \
modelscope-registry.cn-hangzhou.cr.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.1.0-py311-torch2.3.1-tf2.16.1-1.28.0
使用GPU启动访问容器
docker run -it --rm \
--gpus all \
modelscope-registry.cn-hangzhou.cr.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.1.0-py311-torch2.3.1-tf2.16.1-1.28.0 \
bash
不带GPU启动容器
docker run -it --rm \
modelscope-registry.cn-hangzhou.cr.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.1.0-py311-torch2.3.1-tf2.16.1-1.28.0 \
bash
测试容器能否正常使用python环境
vim test.py
import torch
# 创建一个 3x2 矩阵,未初始化
x = torch.empty(3, 2)
print(x)
# 创建一个0填充的矩阵,指定数据类型
x = torch.zeros(3, 2, dtype=torch.long)
print(x)
# 使用指定数据创建tensor
x = torch.tensor([3.2, 3])
print(x)
python环境下测试容器内GPU能否正常使用
python
import torch
print(torch.cuda.is_available())
显示True即可