docker: неопознанная служба при установке CUDA

docker: неопознанная служба при установке CUDA

Образ ядра 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скрипт.

Связанный контент