nvidia-docker: неизвестная среда выполнения, указанная nvidia
Я попытался установить nvidia-docker после установки docker-ce. Я следовал этому: https://github.com/NVIDIA/nvidia-docker для установки nvidia-docker. Вроде правильно установили.
Я пытался бежать:
$ sudo docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
docker: Error response from daemon: Unknown runtime specified nvidia.
See 'docker run --help'.
Хотя, это работает (без --runtime=nvidia):
$ docker container run -ti ubuntu bash
Некоторая дополнительная информация о моей системе: это сервер Ubuntu 16.04 с 8 графическими процессорами (Titan Xp) и драйвером nvidia версии 387.26. Я могу запустить nvidia-smi -l 1 на хост-системе, и она работает как положено.
$ dpkg -l | grep -E '(nvidia|docker)'
ii docker-ce 18.06.1~ce~3-0~ubuntu amd64 Docker: the open-source application container engine
ii libnvidia-container-tools 1.0.0-1 amd64 NVIDIA container runtime library (command-line tools)
ii libnvidia-container1:amd64 1.0.0-1 amd64 NVIDIA container runtime library
ii nvidia-container-runtime 2.0.0+docker18.06.1-1 amd64 NVIDIA container runtime
ii nvidia-container-runtime-hook 1.4.0-1 amd64 NVIDIA container runtime hook
ii nvidia-docker2 2.0.3+docker18.06.1-1 all nvidia-docker CLI wrapper
$ cat /etc/docker/daemon.json
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
Я сталкивался: https://github.com/NVIDIA/nvidia-docker/issues/501, но я не уверен, как я должен поступить об этом.
9 ответов
Из репозитория github nvidia-docker :
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-get update
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd
На самом деле, вы можете попытаться перезапустить демон docker, выполнив следующую команду.
sudo systemctl daemon-reload
sudo systemctl restart docker
Или вы можете попытаться перезагрузить вашу систему. заставить работать nvidia-docker
Вот как я решаю указанную выше проблему для CentOS 7; Надеюсь, это поможет любому, у кого есть подобные проблемы.
- Добавьте необходимые репозитории, чтобы получить nvidia-container-runtime:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.repo | sudo tee /etc/yum.repos.d/nvidia-container-runtime.repo
- (Необязательно) В моем случае я отключил экспериментальные репозитории:
sudo yum-config-manager --disable libnvidia-container-experimental
sudo yum-config-manager --disable nvidia-container-runtime-experimental
- Установите пакет nvidia-container-runtime:
sudo yum install nvidia-container-runtime
- Обновить демон докеров:
sudo vim /etc/docker/daemon.json
с путем к nvidia-container-runtime:
{
runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
- Наконец, вам нужно заставить докер обновлять путь:
sudo pkill -SIGHUP dockerd
Кажется, вам может понадобиться очистить докер и переустановить его, как в посте: github Issues
sudo apt remove docker-ce
sudo apt autoremove
sudo apt-get install docker-ce=5:18.09.0~3-0~ubuntu-bionic
sudo apt install nvidia-docker2
Следуйте инструкциям в FAQ, и моя проблема была решена.
Если у вас возникли проблемы с установкой nvidia-docker, попробуйте запустить этот сценарий оболочки . У меня это сработало, даже когда nvidia-docker вышел из строя.
в версии докера выше 19.03 или выше nvidia-docker2 больше не требуется (устарело) https://docs.nvidia.com/ai-enterprise/deployment-guide-vmware/0.1.0/docker.html , но их документ отсутствует часть конфигурации
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
sudo nvidia-ctk runtime configure --runtime=containerd
sudo systemctl restart containerd
Я считаю, что это решит оригинал
docker: Error response from daemon: unknown or invalid runtime name: nvidia
Еслиnvidia-container-toolkit
иdocker
установлены правильно
Измените тег --runtime=nvidia на --runtine = gpus, надеюсь, он запустится.