安装nvidia-docker2后,即可在docker中使用GPU,也是在k8s中创建使用GPU的docker以及使用云原生kubeflow技术的基础,

安装英伟达显卡驱动

首先需要操作系统中英伟达显卡驱动的支持

有关内容可以参考:

配置nvidia-docker2

# 添加源
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
sudo tee /etc/apt/sources.list.d/nvidia-docker.list

# 更新源
sudo apt update

​ 其中distribution变量是当前的操作系统版本,因此上面的命令可以直接作用于Ubuntu18.04或者其他Ubuntu版本。

安装nvidia-docker2

# 安装nvidia-docker2
sudo apt install -y nvidia-docker2

# 重启Docker daemon
sudo pkill -SIGHUP dockerd

验证nvidia-docker2

sudo nvidia-docker run --rm nvidia/cuda nvidia-smi

如果能够像当前物理机使用nvidia-smi一样输出类似的结果,那么验证成功,注意当前image基于Ubuntu 18.04。

设置默认使用nvidia-docker

使用sudo gedit /etc/docker/daemon.json

然后输入一下内容:

{
    "default-runtime": "nvidia",
    "runtimes": {
        "nvidia": {
            "path": "/usr/bin/nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}

并重启docker:systemctl restart docker

报错

有时候也会出现错误docker: Error response from daemon: Unknown runtime specified nvidia.

这时候需要输入以下命令:

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/override.conf <<EOF
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=nvidia=/usr/bin/nvidia-container-runtime
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker


sudo tee /etc/docker/daemon.json <<EOF
{
    "runtimes": {
        "nvidia": {
            "path": "/usr/bin/nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}
EOF
sudo pkill -SIGHUP dockerd

权限

将当前用户加入docker用户组以获得使用docker的权限。

sudo groupadd docker     #添加docker用户组
sudo gpasswd -a $USER docker     #将登陆用户加入到docker用户组中
newgrp docker     #更新用户组
docker ps    #测试docker命令是否可以使用sudo正常使用
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐