当前位置: 首页 > 知识库问答 >
问题:

Docker for Windows和WSL1协同工作

夏长卿
2023-03-14

完全相同的问题,因为Ubuntu WSL与docker无法找到

$ 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(出于本主题以外的原因)

也就是说,我有WSL1和Docker for Windows彼此并行安装。这是我目前的信息:

C:> ver
Microsoft Windows [Version 10.0.18363.1379]

C:> wsl -l -v
  NAME      STATE           VERSION
* Debian    Running         1

我看不到“资源”中的集成-

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

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

有什么解决办法吗?

共有2个答案

司马高韵
2023-03-14

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

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

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

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

然后docker现在可以在任何地方工作,在CMDPowershellgit-bash,以及WSL1中。

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

孙泉
2023-03-14

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

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

虽然以上是事实,但我们仍然有机会让您在WSL1bash中操作docker ps、docker pull等,就像您通过CMD、Powershell、git bash操作一样,这允许docker接受远程主机的请求。

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

1.将docker桌面中的docker守护程序作为下一步公开,然后单击应用

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
 类似资料:
  • 问题内容: 我遇到了一个有趣的问题,一个以苹果为中心的用户将渴望在Filemaker Pro上运行数据库,而我们已经有多个数据库在MS SQL上运行。 FM Pro在外观上令人赞叹,作为与客户合作的前端看起来不错,但我更喜欢SQL。 有人同时使用吗?您是否可以轻松地在SQL和FM Pro之间运行任务以将数据更新到FM Pro(比如说隔夜)?是否有人出于任何目的将SQL从FM Pro更改为可以吗?

  • 问题内容: 我很难让这些组件正确地编织在一起。我已经安装了Spark并且可以成功工作,我可以在本地,独立运行作业,也可以通过YARN运行作业。据我所知,我已经按照此处和此处建议的步骤进行操作 我正在使用Ubuntu,而我拥有的各种组件版本是 Spark Spark 1.5.1-bin-hadoop2.6 Hadoop hadoop-2.6.1 蒙哥 2.6.10 *从 https://github

  • 项目落户GitHub后,一定希望有越来越多的人能参与其中。GitHub提供了包括传统的问题追踪系统、维基,还包括了分布式版本控制系统特有的协同工具。 4.1. Fork + Pull模式 4.2. 共享版本库 4.3. 组织和团队 4.4. 代码评注 4.5. 缺陷跟踪 4.6. 维基

  • 问题内容: 我想要双向JSON到Java的序列化 我正在成功使用Java到JSON到jQuery的路径…()例如 在JQuery中,我使用 这很好用(例如,感谢所有回答者,注释已经可以使用了) 但是,我该如何做反向路径:是否已使用RequestBody将JSON序列化回Java对象? 无论我尝试什么,我都无法像这样工作: 我已经正确配置了Jackson(它会在出局时序列化),并且我将MVC设置为驱

  • 要想团队协作使用Git,就需要用到Git协议。 3.1.1. Git支持的协议 首先来看看数据交换需要使用的协议。 Git提供了丰富的协议支持,包括:SSH、GIT、HTTP、HTTPS、FTP、FTPS、RSYNC及前面已经看到的本地协议等。各种不同协议的URL写法如表15-1所示。 表 15-1:Git支持的协议一览表 协议名称 语法格式 说明 SSH协议(1) ssh://[user@]ex

  • 我正在开发一个Spring Boot应用程序,其中的日志是通过logback完成的,并且集成了Jaeger用于检测。 MyService.java 我尝试了Zipkin而不是Jaeger,但同样的事情发生了。我的申请有什么问题?依赖性有问题吗?