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
我在运行命令时收到一条消息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
这是命令尝试运行的同一个 init 脚本。据推测,它是docker.io
在编写说明(并且可能有效)和现在之间的某个时间从包中删除的。这真的不足为奇。Ubuntu 使用 Systemd,并docker.io
为 Docker 服务安装 Systemd 单元文件。许多包过去还提供旧的初始化脚本。
但是,WSL 不支持 Systemd(至少没有太多黑客手段)。最好有一个为命令提供初始化脚本的 Docker 版本service
。要么这样,要么知道如何在 WSL 下自行启动。
因此让我们开始卸载它docker.io
及其安装的依赖项:
sudo apt remove docker.io
sudo apt autoremove
那么你有两个选择。要么:
安装 Docker Desktop for Windows。Docker Desktop 与 WSL 紧密集成,并提供了一些开源 Docker 版本所没有的实用功能:
- 它可以在多个 WSL2 实例之间共享
- 它可以从 PowerShell 和 CMD 运行
- 它提供了容器和卷的 GUI 仪表板
- 它可以处理自动升级(尽管有些人可能认为这不一定是一个优势)
- 这是一种便捷的方法,可以自动为您处理下面所有其他的内容。
最近许可证发生了变化,如果你在一家大公司使用它,就需要付费订阅。有些人似乎因此想要放弃它,但我建议(纯粹是我的意见)如果你在一家大公司工作,他们通常会为这些工具付费。而这反过来又有助于资助 Docker 的开源计划。
但是,如果您确实想使用开源版本,则可以使用(大多数情况下)Ubuntu 的官方 Docker 说明。
这些说明确实假设安装脚本将启动 Docker 守护程序。但是,它尝试使用 Systemd,这在 WSL 上会失败。但现在它确实提供了 init.d 脚本,因此您现在可以
sudo service docker start
按照最初尝试的方式运行。另外,nVidia 提供安装说明使用该
get.docker.com
脚本。