docker:安裝 CUDA 時無法辨識的服務

docker:安裝 CUDA 時無法辨識的服務

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腳本。

相關內容