安装nvidia-docker2后,即可在docker中使用GPU,也是在k8s中创建使用GPU的docker以及使用云原生kubeflow技术的基础,
安装英伟达显卡驱动
首先需要操作系统中英伟达显卡驱动的支持
有关内容可以参考:
配置
nvidia-docker2
源
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
# 安装nvidia-docker2
sudo apt install -y nvidia-docker2
# 重启Docker daemon
sudo pkill -SIGHUP dockerd
验证
nvidia-docker2
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正常使用