【问题标题】:Docker for Windows and WSL1 to Work togetherDocker for Windows 和 WSL1 协同工作
【发布时间】:2021-06-02 14:05:37
【问题描述】:

Ubuntu WSL with docker could not be found完全一样的问题

$ docker

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

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

但我的要求不同——我想要

  • 坚持使用 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 安装 彼此平行。

有什么解决办法吗?

【问题讨论】:

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

标签: docker windows-subsystem-for-linux


【解决方案1】:

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

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

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

binary=$(basename "$0")
"$binary.exe" "$@"

那么docker 现在可以在任何地方工作,在CMDPowershellgit-bashWSL1 中。

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

【讨论】:

    【解决方案2】:

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

    这意味着在WSL2 中,它有一个真正的Linux 内核,需要安装docker daemon,然后在docker-desktop 中你可以有机会在WSL2 中设置docker daemon。否则,docker 守护进程在Hyper-V machine 中运行。但是,如果你坚持使用WSL1,就没有机会在 WSL 中运行 docker-daemon,所以唯一的选择是在 Hyper-V machine 中运行 docker daemon

    虽然以上是事实,但我们仍然有机会让你在WSL1bash 中操作docker ps, docker pull 等,就像你通过CMD, Powershell, git-bash 操作一样,即allow Docker to accept requests from remote hosts

    对于您的情况,下一步可能是:

    1.接下来在docker desktop设置中暴露docker守护进程,然后点击Apply & Restart:

    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
    

    3.设置默认 docker 守护进程:

    $ export DOCKER_HOST=tcp://localhost:2375
    

    4.验证 docker 客户端命令:

    $ ./docker info
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-13
      • 1970-01-01
      • 1970-01-01
      • 2011-05-11
      • 2016-06-25
      相关资源
      最近更新 更多