在此 WSL 1 发行版中找不到命令 $ docker
。
我们建议将此发行版转换为 WSL 2 并在 Docker Desktop 设置中激活 WSL 集成。
有关详细信息,请参见 https://docs.docker.com/docker-for-windows/wsl/。
无法更改为 WSL2,也无法安装 docker:
在此 WSL 1 发行版中找不到命令 $ docker
。
我们建议将此发行版转换为 WSL 2 并在 Docker Desktop 设置中激活 WSL 集成。
有关详细信息,请参见 https://docs.docker.com/docker-for-windows/wsl/。
无法更改为 WSL2,也无法安装 docker:
wsl_update_x64.msi
后才能正常运行。请参考此处的第3步骤:https://docs.docker.com/docker-for-windows/wsl/#prerequisites - Dizzy假设您的系统已经安装了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.
wsl --set-default Ubuntu-20.04
。 - Wes尽管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.
> wsl -t docker-desktop
> wsl --shutdown
> wsl --unregister docker-desktop
然后进入Windows服务,停止Docker桌面服务,或在以管理员身份运行的Windows shell中运行以下命令:
> Stop-Service -Name "com.docker.service"
最后,重新启动 Docker Desktop 应用程序。
在 Windows Shell 中进行测试:
> wsl docker --version
Docker version 20.10.2, build 2291f61
wsl
终端中运行以下命令有效:sudo apt-get update
apt-cache policy docker-ce
sudo apt-get install -y docker-ce
sudo apt-get install docker-compose
sudo apt-get upgrade
在资源管理器下,我没有看到WSL(Windows Subsystem for Linux)集成的选项。
我需要在“常规设置”下取消勾选“使用基于WSL2的引擎”,点击应用,然后再次勾选它并点击应用。这样,在资源管理器下就可以看到WSL集成选项,并且可以单击Ubuntu滑块。
对于那些仍然遇到此问题的人,我的某些符号链接神奇地消失了,重新安装也没有用。
确保在您的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
/usr/bin
下有符号链接,但显然这是一个解决方法。我阅读了docker
(而不是docker.exe
)文件/mnt/c/Program Files/...,它是一个shell脚本,检查/usr/bin中的docker。 - tijko我遇到了这个问题,对我来说运行
$ ls -l /usr/bin/ | grep docker
which docker
/mnt/c/Program Files/Docker/Docker/resources/bin/docker
PATH
变量的第一个条目设置为/usr/bin
。PATH="/usr/bin:$PATH"
从众多的答案中看,似乎有很多因素会导致这个错误,所以你可能需要针对具体情况进行处理。
另一个要检查的好方法是确保Docker Desktop正在运行。如果它没有运行,which docker
会返回上述/mnt/c/...
目录。
在我的情况下,docker应用程序已正确设置集成,WSL2已正确设置为默认wsl,但我无法像其他答案中提到的那样取消注册wsl docker实例并重启docker服务。
过了一段时间后,我注意到命令docker-compose
成功运行。问题仅限于docker
命令。
我在目录usr/bin
中寻找所有的docker命令,这是docker-compose
所在的路径(which docker-compose
),因此运行ls -l /usr/bin | grep docker
,我发现
drwxrwxrwx 1 root root 48 Nov 29 10:59 docker
lrwxrwxrwx 1 root root 56 Nov 29 10:59 docker-compose -> /mnt/wsl/docker-desktop/cli-tools/usr/bin/docker-compose*
lrwxrwxrwx 1 root root 59 Nov 29 10:59 docker-compose-v1 -> /mnt/wsl/docker-desktop/cli-tools/usr/bin/docker-compose-v1*
lrwxrwxrwx 1 root root 71 Nov 29 10:59 docker-credential-desktop.exe -> /mnt/wsl/docker-desktop/cli-tools/usr/bin/docker-credential-desktop.exe*
lrwxrwxrwx 1 root root 50 Nov 29 10:59 hub-tool -> /mnt/wsl/docker-desktop/cli-tools/usr/bin/hub-tool*
由于某些奇怪的原因,Docker不是符号链接,而是一个目录。
我通过删除该目录并手动重新创建符号链接来解决该问题:
rm -rf /usr/bin/docker
sudo ln -s /mnt/wsl/docker-desktop/cli-tools/usr/bin/docker /usr/bin/docker
sudo ln -s /mnt/wsl/docker-desktop/cli-tools/usr/bin/com.docker.cli /usr/bin/docker
。 - Andrzej Krawczuk
apt install
docker?你需要在Windows操作系统上安装完整的docker,然后在WSL环境中安装docker CLI工具,并将WSL的docker指向主机的docker端口。这应该会有所帮助:https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawlessly - Taylor Reeceexplorer.exe .
,这打开了一个网络文件夹,在其中我必须从“c:\dev”即Windows文件系统中复制所有的项目。之后什么也不起作用了,Fabrício的答案拯救了一天。然后在Windows的Ubuntu中,我执行了cd dev/gitlab.mycompany.com/my-project/sub-project
然后code .
打开了VS Code中WSL版本的我的项目。重建Docker容器,现在一切都运行得很顺畅。 - s3c