Docker: servicio no reconocido al instalar CUDA

Docker: servicio no reconocido al instalar CUDA

Imagen del kernel WSL2 Ubuntu 20.04.3 LTS: 5.10.60.1-microsoft-standard-WSL2

Estoy intentando instalar CUDA según las instrucciones aquí:https://ubuntu.com/blog/getting-started-with-cuda-on-ubuntu-on-wsl-2

Y recibo un docker: unrecognized servicemensaje al ejecutar el comando sudo service docker stop. Seguí las instrucciones hasta el punto donde aparece este comando en el tutorial y los resultados de la ejecución sudo apt update && sudo apt install -y nvidia-docker2parecen exitosos. También intenté verificar si el servicio Docker está disponible service --status-ally no lo vi en los resultados.

Ayúdenme a descubrir cómo instalar CUDA correctamente. Estoy intentando configurar opencv con soporte de GPU para un proyecto en el que estoy trabajando en el procesamiento de imágenes.

Aquí están los resultados de los comandos mencionados que ejecuté:

 service --status-all

Producción:

 [ - ]  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

Dominio:

sudo apt update && sudo apt install -y nvidia-docker2

Producción:

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.

Respuesta1

Pude reproducir esto usando las instrucciones canónicas (aparentemente desactualizadas) que vinculó.

Puede ver el problema /var/log/apt/term.logdurante la instalación del docker.iopaquete:

invoke-rc.d: unknown initscript, /etc/init.d/docker not found.

Es el mismo script de inicio que el servicecomando intenta ejecutar. Presumiblemente, se eliminó del docker.iopaquete en algún momento entre el momento en que se escribieron las instrucciones (y presumiblemente eran válidas) y ahora. En realidad, eso no es ninguna sorpresa. Ubuntu usa Systemd e docker.ioinstala el archivo de unidad Systemd para el servicio Docker. Muchos paquetes solíantambiénproporcione el script de inicio heredado.

Sin embargo, WSL no es compatible con Systemd (al menos sin mucha piratería). Es mucho mejor tener una versión de Docker que proporcione un script de inicio para el servicecomando. O eso, o uno que sepa empezar por sí solo bajo WSL.

Entonces, comencemos por desinstalar docker.ioy las dependencias que instaló:

sudo apt remove docker.io
sudo apt autoremove

Entonces tienes dos opciones. Cualquiera:

  • Instalar Docker Desktop para Windows. Docker Desktop tiene una estrecha integración con WSL y proporciona algunas características interesantes que no se obtienen con la versión de código abierto de Docker:

    • Se puede compartir entre múltiples instancias WSL2.
    • Puede ejecutarse desde PowerShell y CMD
    • Proporciona un panel GUI de contenedores y volúmenes.
    • Maneja actualizaciones automáticas (aunque algunos podrían no considerarlo necesariamente una ventaja)
    • Es un método conveniente que maneja todas las demás cosas a continuación automáticamente.

    Recientemente se ha producido un cambio de licencia que requiere una suscripción paga si la utiliza en una gran empresa. Como resultado, algunas personas parecen querer alejarse de él, pero yo propondría (puramente mi opinión) que si trabaja para una empresa grande, a menudo pagarán por este tipo de herramientas. Y eso, a su vez, ayuda a financiar las iniciativas de código abierto de Docker.

  • Sin embargo, si desea utilizar la edición de código abierto, puede hacerlo utilizando (principalmente)las instrucciones oficiales de Docker para Ubuntu.

    Esas instrucciones suponen que el script de instalación iniciará el demonio Docker. Sin embargo, intenta utilizar Systemd, lo que falla en WSL. Pero ahora proporciona el script init.d, por lo que ahora puede ejecutarlo sudo service docker startcomo lo intentó originalmente.

    Alternativamente, nVidia proporcionainstrucciones de configuraciónque utilizan el get.docker.comguión.

información relacionada