
WSL2 Ubuntu 20.04.3 LTS 核心映像:5.10.60.1-microsoft-standard-WSL2
我正在嘗試按照此處的說明安裝 CUDA:https://ubuntu.com/blog/getting-started-with-cuda-on-ubuntu-on-wsl-2
docker: unrecognized service
執行 command 時我收到一條訊息sudo service docker stop
。我確實按照教程中的說明執行了該命令,並且運行結果sudo apt update && sudo apt install -y nvidia-docker2
似乎是成功的。我還嘗試檢查 docker 服務是否可用,service --status-all
但在結果中沒有看到它。
請幫我弄清楚如何正確安裝 CUDA,我正在嘗試為我正在從事的映像處理專案設定支援 GPU 的 opencv。
以下是我運行的上述命令的輸出:
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
我已經能夠使用您連結的(顯然已經過時的)規範說明來重現此內容。
/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
為 Docker 服務安裝 Systemd 單元檔案。許多軟體包用於也提供舊的初始化腳本。
然而,WSL 不支援 Systemd(至少沒有太多駭客攻擊)。最好有一個為service
指令提供 init 腳本的 Docker 版本。要么是這樣,要么是知道如何在 WSL 下自行開始的人。
因此,讓我們從卸載docker.io
及其安裝的依賴項開始:
sudo apt remove docker.io
sudo apt autoremove
那你有兩個選擇。任何一個:
安裝適用於 Windows 的 Docker 桌面。 Docker Desktop 與 WSL 緊密整合,並提供了一些開源 Docker 版本所沒有的優秀功能:
- 它可以在多個 WSL2 實例之間共用
- 它可以從 PowerShell 和 CMD 運行
- 它提供了容器和卷的 GUI 儀表板
- 它處理自動升級(儘管有些人可能認為這不一定是優勢)
- 這是一種方便的方法,可以自動為您處理以下所有其他內容。
最近許可證發生了變化,如果您在大公司使用它,則需要付費訂閱。有些人似乎因此想要放棄它,但我建議(純粹是我的意見),如果你在一家大公司工作,他們通常會為這些工具付費。這反過來又有助於為 Docker 的開源計劃提供資金。
但是,如果您確實想使用開源版本,則可以使用(大多數)Ubuntu 的官方 Docker 說明。
這些說明假定安裝腳本將啟動 Docker 守護程式。但是,它嘗試使用 Systemd,但在 WSL 上失敗。但現在它確實提供了 init.d 腳本,因此您現在可以
sudo service docker start
按照最初嘗試的方式運行。或者,nVidia 提供設定說明哪個使用
get.docker.com
腳本。