NVIDIA Docker Install
NVIDIA Docker Install
Background
Docker 是一种虚拟化技术,之前部署 OpenWebUI 时真正第一次使用,发现在快速部署上非常优雅。之后做机器学习发现配置环境非常繁琐,趁这次正好有一个偏工程化一点的计划,在配置组里面新到的 GPU 服务器时要了 root 来配置。
Internet
当你发现一个服务器无法联网,不要急,我有一套继承自师兄的方法。
1.在本机上使用代理软件开放一个端口 (比如说 clash 默认的 7892
) 且保证能通过代理联网。
2.本机上运行
bash
ssh -R 2333:localhost:7892 <user>@<host.adress>
3.服务器上运行
bash
export ALL_PROXY="http://127.0.0.1:2333"
export https_proxy="http://127.0.0.1:2333"
export http_proxy="http://127.0.0.1:2333"
然后记得并不是所有流量都会经过代理。 不过现在可以愉快的联网了!
Install
需要安装两个部分,Docker 以及 NVIDIA Container Toolki。
我以 rocky_8 为例
Docker
联网之后当然好说,然后没有 root 是装不了的(
使用管理账号,按照教程 所示
bash
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
dnf update
dnf install docker-ce
然后设置普通用户的使用权限(rootless 就不搞了)
bash
usermod -aG docker $USER
newgrp docker
NVIDIA Container Toolki
按照Nvidia 给的教程 多半是有问题的(没错!是联网的问题) 我还是按Rocky社区的教程
bash
wget -O /etc/yum.repos.d/nvidia-container-toolkit.repo https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo # 配置仓库信息
dnf install -y nvidia-container-toolkit # 安装容器工具包
nvidia-ctk runtime configure --runtime=docker # 该 nvidia-ctk 命令会修改 /etc/docker/daemon.json 主机上的文件,以便 Docker 可以使用 NVIDIA 容器运行
systemctl restart docker # 重启 docker 服务
然后记得给 docker 联网,默认是不走代理的(
Vscode
这个仅仅是记录,就不解释了,vscode开发容器构建太麻烦了(连不了网的时候)
json
#.devcontainer/devcontainer.json
{
"name": "GPU Development",
"build": {
"dockerfile": "Dockerfile"
},
"runArgs": [
"--gpus=all",
"--network=host"
],
"remoteUser": "root", // 使用 root 用户,避免用户不存在的问题
"postCreateCommand": "nvidia-smi"
}
Dockerfile
#.devcontainer/Dockerfile
# 使用 NVIDIA CUDA 12.6.1 开发镜像
FROM nvidia/cuda:12.6.1-runtime-rockylinux8
USER root
# 配置国内镜像源
RUN sed -i 's|^mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/Rocky-*.repo && \
sed -i 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' /etc/yum.repos.d/Rocky-*.repo
# 禁用CUDA存储库(因为基础镜像已经包含CUDA)
RUN if [ -f /etc/yum.repos.d/cuda.repo ]; then \
sed -i 's|enabled=1|enabled=0|g' /etc/yum.repos.d/cuda.repo; \
fi
RUN yum install -y kmod
# 设置容器的工作目录
WORKDIR /workspace