安装nvidia-docker2

  • Post author:
  • Post category:其他



安装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正常使用