
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 service
Meldung, 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-docker2
scheinen erfolgreich zu sein. Ich habe auch versucht zu prüfen, ob der Docker-Dienst überhaupt verfügbar ist, service --status-all
und 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.log
Sie 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 service
Befehl auszuführen versucht. Vermutlich wurde es docker.io
irgendwann 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.io
die 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 service
Befehl bereitstellt. Entweder das oder eine, die weiß, wie sie unter WSL von selbst gestartet wird.
Beginnen wir also mit der Deinstallation docker.io
und 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 start
wie ursprünglich versucht ausführen können.Alternativ bietet nVidiaInstallationsanweisungendie das
get.docker.com
Skript verwenden.