
Образ ядра WSL2 Ubuntu 20.04.3 LTS: 5.10.60.1-microsoft-standard-WSL2
Я пытаюсь установить CUDA согласно инструкции здесь:https://ubuntu.com/blog/начало работы с cuda на ubuntu на wsl-2
И я получаю docker: unrecognized service
сообщение при запуске команды sudo service docker stop
. Я следовал инструкциям до того момента, когда эта команда находится в руководстве, и результаты запуска sudo apt update && sudo apt install -y nvidia-docker2
кажутся успешными. Я также пытался проверить, доступна ли служба docker вообще service --status-all
, но не увидел ее в результатах.
Пожалуйста, помогите мне разобраться, как правильно установить CUDA. Я пытаюсь настроить OpenCV с поддержкой GPU для проекта по обработке изображений, над которым я работаю.
Вот результаты выполнения упомянутых мной команд:
service --status-all
Выход:
[ - ] apparmor
[ ? ] apport
[ - ] atd
[ - ] console-setup.sh
[ - ] cron
[ ? ] cryptdisks
[ ? ] cryptdisks-early
[ - ] dbus
[ ? ] hwclock.sh
[ + ] irqbalance
[ - ] iscsid
[ - ] keyboard-setup.sh
[ ? ] kmod
[ - ] lvm2
[ - ] lvm2-lvmpolld
[ - ] multipath-tools
[ + ] open-iscsi
[ - ] open-vm-tools
[ ? ] plymouth
[ ? ] plymouth-log
[ - ] procps
[ - ] rsync
[ - ] rsyslog
[ - ] screen-cleanup
[ - ] ssh
[ ? ] ubuntu-fan
[ + ] udev
[ - ] ufw
[ - ] unattended-upgrades
[ - ] uuidd
[ - ] x11-common
Команда:
sudo apt update && sudo apt install -y nvidia-docker2
Выход:
Hit:1 http://archive.ubuntu.com/ubuntu focal InRelease
Hit:2 http://archive.ubuntu.com/ubuntu focal-updates InRelease
Hit:3 https://nvidia.github.io/libnvidia-container/experimental/ubuntu18.04/amd64 InRelease
Hit:4 http://archive.ubuntu.com/ubuntu focal-backports InRelease
Hit:5 https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64 InRelease
Hit:6 http://security.ubuntu.com/ubuntu focal-security InRelease
Hit:7 https://nvidia.github.io/nvidia-container-runtime/stable/ubuntu18.04/amd64 InRelease
Hit:8 https://nvidia.github.io/nvidia-docker/ubuntu18.04/amd64 InRelease
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.
Reading package lists... Done
Building dependency tree
Reading state information... Done
nvidia-docker2 is already the newest version (2.8.0-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
решение1
Мне удалось воспроизвести это с помощью (очевидно устаревших) инструкций Canonical, ссылку на которые вы дали.
Проблему можно увидеть /var/log/apt/term.log
во время установки пакета docker.io
:
invoke-rc.d: unknown initscript, /etc/init.d/docker not found.
Это тот же самый скрипт инициализации, который service
пытается запустить команда. Предположительно, он был удален из docker.io
пакета где-то между временем написания инструкций (и, предположительно, действительным) и настоящим моментом. Это неудивительно, на самом деле. Ubuntu использует Systemd, и устанавливает docker.io
файл модуля Systemd для службы Docker. Многие пакеты раньшетакжепредоставить устаревший сценарий инициализации.
Однако WSL не поддерживает Systemd (по крайней мере, без большого хакерства). Гораздо лучше иметь версию Docker, которая предоставляет скрипт инициализации для service
команды. Либо это, либо тот, который умеет самостоятельно запускаться под WSL.
Итак, начнем с удаления docker.io
и установленных им зависимостей:
sudo apt remove docker.io
sudo apt autoremove
Тогда у вас есть два варианта. Либо:
Установить Docker Desktop для WindowsDocker Desktop тесно интегрирован с WSL и предоставляет некоторые полезные функции, которых нет в версии Docker с открытым исходным кодом:
- Его можно совместно использовать между несколькими экземплярами WSL2.
- Его можно запустить из PowerShell и CMD.
- Предоставляет графический интерфейс панели управления контейнерами и томами.
- Он поддерживает автоматические обновления (хотя некоторые могут не счесть это преимуществом)
- Это удобный метод, который автоматически выполняет все остальные действия, описанные ниже.
Недавно произошло изменение лицензии, которое требует платной подписки, если вы используете его в крупной компании. Некоторые люди, похоже, хотят отойти от этого в результате, но я бы предположил (исключительно мое мнение), что если вы работаете в крупной компании, они часто будут платить за такого рода инструменты. И это, в свою очередь, помогает финансировать инициативы Docker с открытым исходным кодом.
Однако, если вы хотите использовать версию с открытым исходным кодом, вы можете сделать это, используя (в основном)официальные инструкции Docker для Ubuntu.
Эти инструкции предполагают, что скрипт установки запустит демон Docker. Однако он пытается использовать Systemd, что не удается на WSL. Но теперь он предоставляет скрипт init.d, поэтому теперь вы можете запустить его
sudo service docker start
так, как вы изначально пытались.В качестве альтернативы nVidia предоставляетинструкции по установкекоторые используют
get.docker.com
скрипт.