Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker for Windows和WSL1协同工作_Docker_Windows Subsystem For Linux - Fatal编程技术网

Docker for Windows和WSL1协同工作

Docker for Windows和WSL1协同工作,docker,windows-subsystem-for-linux,Docker,Windows Subsystem For Linux,完全相同的问题 但我的要求不同——我想 坚持使用WSL1(出于本主题以外的原因) 并按原样使用Docker for Windows 也就是说,我有WSL1和Docker for Windows并行安装。这是我当前的信息: C:> ver Microsoft Windows [Version 10.0.18363.1379] C:> wsl -l -v NAME STATE VERSION * Debian Running

完全相同的问题

但我的要求不同——我想

  • 坚持使用WSL1(出于本主题以外的原因)
  • 并按原样使用Docker for Windows
也就是说,我有WSL1和Docker for Windows并行安装。这是我当前的信息:

C:> ver
Microsoft Windows [Version 10.0.18363.1379]

C:> wsl -l -v
  NAME      STATE           VERSION
* Debian    Running         1
我在“资源->WSL集成”中没有看到集成,在Docker桌面设置中也没有启用WSL2后端

只是我遇到了上面的问题——我的
docker
可以在任何地方工作,在CMD、Powershell、git bash等中,只是不在我的WSL中

我找到的所有解决方案都是在WSL1或WSL2中安装Docker for Windows,但我希望保持一切原样--WSL和Docker for Windows并行安装

有什么解决办法吗

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

这意味着在
WSL2
中,它有一个安装docker守护程序所需的真正linux内核,然后在
docker desktop
中,您可以有机会在
WSL2
中设置docker守护程序。否则,docker守护程序将在
Hyper-V机器中运行。但是,如果您坚持使用
WSL1
,就没有机会在WSL中运行
docker守护程序
,因此唯一的选项是在
Hyper-V机器
中运行
docker守护程序

虽然以上是事实,但我们仍然有机会让您在
WSL1
bash中操作
docker ps、docker pull
等,就像您通过
CMD、Powershell、git bash
操作一样

对于您的情况,接下来的步骤可能是:

1。将docker desktop中的docker daemon作为下一步公开,然后单击应用并重新启动

$ wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.5.tgz
$ tar zxvf docker-20.10.5.tgz
$ cd docker
$ export DOCKER_HOST=tcp://localhost:2375
$ ./docker info

2。在WSL1中安装独立docker客户端:

$ wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.5.tgz
$ tar zxvf docker-20.10.5.tgz
$ cd docker
$ export DOCKER_HOST=tcp://localhost:2375
$ ./docker info
3。设置默认docker守护程序:

$ wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.5.tgz
$ tar zxvf docker-20.10.5.tgz
$ cd docker
$ export DOCKER_HOST=tcp://localhost:2375
$ ./docker info
4。验证docker客户端命令:

$ wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.5.tgz
$ tar zxvf docker-20.10.5.tgz
$ cd docker
$ export DOCKER_HOST=tcp://localhost:2375
$ ./docker info

只是FTA,这是我在尝试自己解决问题时发现的快速黑客解决方法

C:\Program Files\Docker\Docker\resources\bin\Docker
文件更改为

#!/usr/bin/env sh
#
# Copyright (c) Docker Inc.

binary=$(basename "$0")
"$binary.exe" "$@"
然后,
docker
现在可以在任何地方工作,在
CMD
Powershell
gitbash
以及
WSL1


请注意,此黑客解决方法专门针对OP中描述的情况,可能不适用于其他任何情况。

是否在Docker桌面设置中取消选中WSL2后端?这样你就可以使用Hyper-V了backend@im_baby,我现在认为我没有WSL2。请参阅我的最新问题。