找不到带有docker的Ubuntu WSL

问题描述

在此WSL 1发行版中找不到命令$ docker。 我们建议将此发行版转换为WSL 2并激活 Docker Desktop设置中的WSL集成。

有关详细信息,请参见https://docs.docker.com/docker-for-windows/wsl/

无法更改为WSL2,也无法安装docker:

docker wls

解决方法

我的问题似乎是一样的,尽管自安装以来集成 WSL 已经启用。

在 windows shell 中:

> wsl docker --version

The command 'docker' could not be found in this WSL 2 distro.
We recommend to activate the WSL integration in Docker Desktop settings.

See https://docs.docker.com/docker-for-windows/wsl/ for details.

解决此问题的一个选项是重新安装 Docker Desktop (https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-docker/configure-docker-daemon#how-to-uninstall-docker),但不需要这样做。

以下步骤对我有用(我在 https://github.com/docker/for-win/issues/7039 找到)。

打开 windows shell(可能以管理员身份),然后运行:

> wsl -t docker-desktop
> wsl --shutdown
> wsl --unregister docker-desktop

然后转到 windows 服务,停止 Docker 桌面服务,或者以管理员身份在 windows shell 中运行命令来执行此操作:

> Stop-Service -Name "com.docker.service"

最后,重启 Docker 桌面应用程序。

在 windows shell 中测试:

> wsl docker --version
Docker version 20.10.2,build 2291f61
,

假设您的系统中已经安装了wsl 2,请以管理员身份运行powershell:

运行wsl --list --verbose,它将为您提供wsl正在运行的进程的列表:

> wsl --list --verbose
  NAME                   STATE           VERSION
  Ubuntu-20.04           Running         1

然后使用 wsl --set-version <your proc> 2进行切换:

> wsl --set-version Ubuntu-20.04 2
Conversion in progress,this may take a few minutes...
For information on key differences with WSL 2 please visit https://aka.ms/wsl2
Conversion complete.
,

您需要转到docker桌面设置,并在“资源-> WSL集成”中启用与发行版的集成。

enter image description here

,

Taylor在评论中写道,您需要从WSL连接到Docker桌面。
在您附加的图像中,有一个复选框expose daemon on ... 选中此框。
现在您需要docker cli,可以安装Linux vm,然后在刚刚安装的Linux vm中安装docker。
然后运行which docker并将此文件复制到Windows计算机。
将Docker可执行文件复制到WSL上的/usr/local/bin中。
现在在WSL中运行以下命令

echo "export DOCKER_HOST=tcp://localhost:2375" >> ~/.bashrc
. ~/.bashrc

这在WSL 1上对我有用。

Here is guide I found on the all process

,

对我来说,除了:右键单击正在运行的 Docker 图标(时钟旁边)并选择“切换到 Linux 容器”

enter image description here

我们开始吧!现在我可以拥有菜单设置 > 资源 > WSL 集成。

,

我遵循了以下步骤:https://docs.microsoft.com/en-us/windows/wsl/install-win10

此外,对于进入ubuntu的docker,最后一步是在docker资源中启用了它。 设置>资源> WSL集成。 来自:https://docs.docker.com/docker-for-windows/wsl/

,

您需要以管理员身份运行 WSL 控制台。 如果不是,则可能无法识别 docker 命令。

,

Fabrício Pereiras 的回答对我有用,但我不得不经常这样做,这仍然很烦人。 事实证明,启动顺序也很重要。

先启动Docker,然后WSL2

我不使用 Windows 启动 Docker 桌面,并且通常已经在 WSL 中打开了一个终端。然后找不到Docker。 Fabricios 的回答对我有用,因为我关闭了 WSL2,然后在 Docker 已经运行时再次启动它。

,

对于那些仍然有问题的人,我的一些符号链接神奇地消失了,重新安装也无济于事。

确保您的 WSL2 安装中有以下符号链接:

$ ls -l /usr/bin/ | grep docker
lrwxrwxrwx 1 root   root          56 Jul 14 13:01 com.docker.cli -> /mnt/wsl/docker-desktop/cli-tools/usr/bin/com.docker.cli
lrwxrwxrwx 1 root   root          48 Jul 14 13:01 docker -> /mnt/wsl/docker-desktop/cli-tools/usr/bin/docker
lrwxrwxrwx 1 root   root          56 Jul 14 13:01 docker-compose -> /mnt/wsl/docker-desktop/cli-tools/usr/bin/docker-compose
lrwxrwxrwx 1 root   root          59 Jul 14 13:01 docker-compose-v1 -> /mnt/wsl/docker-desktop/cli-tools/usr/bin/docker-compose-v1
lrwxrwxrwx 1 root   root          71 Jul 14 13:01 docker-credential-desktop.exe -> /mnt/wsl/docker-desktop/cli-tools/usr/bin/docker-credential-desktop.exe
lrwxrwxrwx 1 root   root          50 Jul 14 13:01 hub-tool -> /mnt/wsl/docker-desktop/cli-tools/usr/bin/hub-tool
lrwxrwxrwx 1 root   root          48 Jun 29 09:27 notary -> /mnt/wsl/docker-desktop/cli-tools/usr/bin/notary
,

我遇到了这个问题,我正在跑步

$ ls -l /usr/bin/ | grep docker

按照 this answer 显示了所有正确的符号链接,但是我看到了以下内容:

which docker
/mnt/c/Program Files/Docker/Docker/resources/bin/docker

解决方法是简单地将 PATH 变量设置为将 /user/bin 作为第一个条目

PATH="/usr/bin:$PATH"

从众多的答案来看,似乎有很多事情会导致这个错误,所以你的里程可能会有所不同。

,

在删除 Ubuntu 18.04 并安装 20.04 后,我仍然遇到此错误。

即使启用了 WSL 2,我仍然面临这个错误。

这对我有用,转到设置 --> 资源并切换“Ubuntu”,然后错误消失:)

enter image description here

,

确保您的发行版与 wsl2 兼容:

https://ubuntu.com/wsl

enter image description here