在WSL(Ubuntu Bash 18.04)内部都没有systemd命令。当我运行sudo systemctl is-active kubelet
时,错误是output: System has not been booted with systemd as init system (PID 1). Can't operate.
: running command: sudo systemctl is-active kubelet
如何在WSL中启用systemd功能?摆脱System has not been booted with systemd
答案 0 :(得分:8)
现在您可以尝试:
sudo service docker start
使用WSL2时,如果您在Windows 2004或更高版本(我认为是Windows)上运行。
答案 1 :(得分:3)
在WSL2中存在系统
Systemd不是WSL2的本机,但是Shayne找到了一种方法来破解它:https://github.com/shayne/wsl2-hacks
这种体验在解雇方法上相当不稳定,但它适用于我的大多数用法:码头工人,迷你库(--driver=none
),系统服务。
PS:请记住在使用前始终连接到您的用户(bash $ USER)。否则,您将无权访问您的配置文件配置(~/.profile
或~/.bash_profile
)。
使用系统精灵
Arkane发布了一种方法来为WSL2在systemd中协调名称空间(或瓶子):https://github.com/arkane-systems/genie
安装后,通过genie连接到您的配置文件:
genie -c bash
目前,仅Ubuntu 18.04和19.10有效。目前没有适用于Ubuntu 20.04的软件包(这一刻我很激动)。
Docker和Minikube在本配置中也可以作为本机(--driver=none
)工作。
答案 2 :(得分:2)
Windows Linux子系统(WSL)2引入了重要意义 架构上的变化,因为它是由Microsoft构建的完整Linux内核, 允许Linux容器在没有仿真的情况下本机运行。
在安装Docker Desktop WSL 2后端之前,您必须先完成 以下步骤:
安装Windows 10版本1903或更高版本。启用WSL 2功能 Windows。
来源-Docker Desktop WSL 2 backend
要找出您的设备正在运行的Windows版本,请按Windows徽标键+ R,在“打开”框中键入winver
,然后选择“确定”。
WSL不支持Systemd,但是有一种解决方法-Script to enable systemd support on current Ubuntu WSL2 images from the Windows store。
答案 3 :(得分:1)
Systemd。可以找到更多信息with this GitHub issue。
此外,在撰写本文时,Docker无法在WSL之上工作,这意味着Kubelet不会有太大用处。为了在本地运行Kubernetes,可以使用包含Kubernetes支持的Docker for Windows,也可以使用Minikube通过Hyper-V或Virtualbox运行VM。
答案 4 :(得分:-2)
Systemd本身没有附加值。需要以正确的顺序启动其他服务,例如Dbus和Jornald。由于缺少这些服务,因此无法进行日志记录和同步。即使是试图绕过此限制的Docker桌面,现在也试图做出决定,以哪种顺序启动并配置Docker守护程序和VPNKit,并在99%的情况下失败。我的计算机无法启动所有最新的Docker桌面版本。