问题描述
在此WSL 1发行版中找不到命令$ docker
。
我们建议将此发行版转换为WSL 2并激活
Docker Desktop设置中的WSL集成。
有关详细信息,请参见https://docs.docker.com/docker-for-windows/wsl/。
无法更改为WSL2,也无法安装docker:
解决方法
我的问题似乎是一样的,尽管自安装以来集成 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集成”中启用与发行版的集成。
, 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 容器”
我们开始吧!现在我可以拥有菜单设置 > 资源 > 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”,然后错误消失:)
,确保您的发行版与 wsl2 兼容: