Docker: Nicht erkannter Dienst bei der Installation von CUDA

Docker: Nicht erkannter Dienst bei der Installation von CUDA

WSL2 Ubuntu 20.04.3 LTS-Kernel-Image: 5.10.60.1-microsoft-standard-WSL2

Ich versuche, CUDA gemäß den Anweisungen hier zu installieren:https://ubuntu.com/blog/erste-schritte-mit-cuda-on-ubuntu-on-wsl-2

Und ich erhalte eine docker: unrecognized serviceMeldung, wenn ich den Befehl ausführe sudo service docker stop. Ich habe die Anweisungen bis zu dem Punkt befolgt, an dem dieser Befehl im Tutorial steht, und die Ergebnisse der Ausführung sudo apt update && sudo apt install -y nvidia-docker2scheinen erfolgreich zu sein. Ich habe auch versucht zu prüfen, ob der Docker-Dienst überhaupt verfügbar ist, service --status-allund habe ihn in den Ergebnissen nicht gesehen.

Bitte helfen Sie mir herauszufinden, wie ich CUDA richtig installiere. Ich versuche, OpenCV mit GPU-Unterstützung für ein Bildverarbeitungsprojekt einzurichten, an dem ich arbeite.

Hier sind die Ausgaben der genannten Befehle, die ich ausgeführt habe:

 service --status-all

Ausgabe:

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

Befehl:

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

Ausgabe:

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.

Antwort1

Ich konnte dies mithilfe der (anscheinend veralteten) Canonical-Anweisungen, die Sie verlinkt haben, reproduzieren.

/var/log/apt/term.logSie können das Problem während der Installation des Pakets sehen docker.io:

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

Das ist dasselbe Init-Skript, das der serviceBefehl auszuführen versucht. Vermutlich wurde es docker.ioirgendwann zwischen dem Zeitpunkt, als die Anweisungen geschrieben wurden (und vermutlich gültig waren), und jetzt aus dem Paket entfernt. Das ist eigentlich keine Überraschung. Ubuntu verwendet Systemd und installiert docker.iodie Systemd-Unit-Datei für den Docker-Dienst. Viele Pakete haben früherAuchStellen Sie das alte Init-Skript bereit.

WSL unterstützt Systemd jedoch nicht (zumindest nicht ohne viel Hacking). Es ist viel besser, eine Docker-Version zu haben, die ein Init-Skript für den serviceBefehl bereitstellt. Entweder das oder eine, die weiß, wie sie unter WSL von selbst gestartet wird.

Beginnen wir also mit der Deinstallation docker.iound den installierten Abhängigkeiten:

sudo apt remove docker.io
sudo apt autoremove

Dann haben Sie zwei Möglichkeiten. Entweder:

  • Installieren Sie Docker Desktop für WindowsDocker Desktop ist eng in WSL integriert und bietet einige nette Funktionen, die Sie in der Open-Source-Version von Docker nicht erhalten:

    • Es kann von mehreren WSL2-Instanzen gemeinsam genutzt werden
    • Es kann von PowerShell und CMD ausgeführt werden
    • Es bietet ein GUI-Dashboard für Container und Volumes
    • Es übernimmt automatische Upgrades (obwohl manche das nicht unbedingt als Vorteil betrachten)
    • Es handelt sich um eine praktische Methode, die alle anderen unten aufgeführten Dinge automatisch für Sie erledigt.

    Es gab kürzlich eine Lizenzänderung, die ein kostenpflichtiges Abonnement erfordert, wenn Sie Docker in einem großen Unternehmen verwenden. Einige Leute scheinen deshalb davon abrücken zu wollen, aber ich würde vorschlagen (rein meine Meinung), dass große Unternehmen, die für diese Art von Tools arbeiten, oft bezahlen. Und das wiederum hilft dabei, die Open-Source-Initiativen von Docker zu finanzieren.

  • Wenn Sie jedoch die Open-Source-Edition verwenden möchten, können Sie dies (meistens) tun mitdie offiziellen Docker-Anweisungen für Ubuntu.

    Diese Anweisungen gehen davon aus, dass das Installationsskript den Docker-Daemon startet. Es versucht jedoch, Systemd zu verwenden, was bei WSL fehlschlägt. Jetzt stellt es jedoch das init.d-Skript bereit, sodass Sie es jetzt sudo service docker startwie ursprünglich versucht ausführen können.

    Alternativ bietet nVidiaInstallationsanweisungendie das get.docker.comSkript verwenden.

verwandte Informationen