Ubuntu下安装Docker之:NVIDIA Container Toolkit
Docker 的一个基本逻辑:容器不包含内核(Kernel),普通程序:只需要 Linux 内核接口;显卡程序:需要 显卡驱动(Driver) 和 CUDA 库。
显卡驱动是深度绑定 Linux 内核的,而 Docker 容器又是为了“一次构建,到处运行”。如果你把几百 MB 的显卡驱动打包进镜像,这个镜像在别的机器上(驱动版本不同)就废了。
NVIDIA Container Toolkit 的方案是:驱动留在宿主机上,通过这个工具包,在容器启动的一瞬间,把必要的显卡设备文件和驱动库“挂载”到容器里。这个工具包并不是一个单一的文件,而是一套组件:
1、nvidia-container-runtime:
这是核心。它是一个定制的 Docker 运行时。当你运行 docker --runtime=nvidia 时,它会介入容器的创建过程,负责把显卡“塞”进容器。
2、nvidia-container-cli:
一个底层的命令行工具,用来列出显卡、配置库路径。
3、nvidia-ctk:
这是你安装时经常用到的配置工具,用来修改 Docker 的配置文件(daemon.json),让 Docker 认出 NVIDIA 运行时。
想象你在租房子(容器):
房子里默认只有电灯开关(CPU 接口)。
你买了一个大功率烤箱(GPU 任务),但房子里没有特种大电流插座。
NVIDIA Container Toolkit 就像是一个“专业电工”,他在你入住的那一刻,从房东的配电箱(宿主机驱动)拉了一根专用的电线(设备挂载)进你的房间。
这样,你的烤箱(AI 模型)就能工作了,而且你走的时候不需要带走电线,下一个租客来的时候,电工再拉一次就行。
---------------------------------------
1、确认系统版本(应该是Ubuntu 24.04 LTS)
lsb_release -a
2、更新本地软件包索引
sudo apt-get update
3、下载 NVIDIA 官方 GPG 密钥
(这个密钥用于证明你之后下载的工具包确实是 NVIDIA 官方发布的)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
4、下载 NVIDIA 软件源列表文件
(我们先把官方提供的地址文件下载到当前目录下,取名为 nvidia.list)
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list -o nvidia.list
5、修改列表文件,指定使用刚才下载的密钥
(这一步是 Ubuntu 24.04 能够正常识别该源的关键。我们使用 sed 命令修改刚才下载的 nvidia.list)
sed -i 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' nvidia.list
6、将修改好的列表文件移动到系统目录
sudo mv nvidia.list /etc/apt/sources.list.d/nvidia-container-toolkit.list
7、再次更新软件源
(这次更新是为了让系统读到刚才我们添加的 NVIDIA 仓库)
sudo apt-get update
8、正式安装 NVIDIA Container Toolkit
sudo apt-get install -y nvidia-container-toolkit
9、让 Docker 识别 NVIDIA 运行时
(这一步会修改 /etc/docker/daemon.json,把 NVIDIA 的驱动接口告诉 Docker)
sudo nvidia-ctk runtime configure --runtime=docker
10、重启 Docker 服务
(配置改完后,必须重启 Docker 才能生效)
sudo systemctl restart docker
11、验证安装是否成功
sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi
出现GPU信息表格就说明安装成功!
评论
发表评论