xpt*_*xpt 4 docker windows-subsystem-for-linux
找不到与带有 docker 的 Ubuntu WSL完全相同的问题
$ 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.
Run Code Online (Sandbox Code Playgroud)
但我的要求不同——我想
即,我将 WSL1 和 Docker for Windows 并行安装。这是我目前的信息:
C:> ver
Microsoft Windows [Version 10.0.18363.1379]
C:> wsl -l -v
NAME STATE VERSION
* Debian Running 1
Run Code Online (Sandbox Code Playgroud)
我在“资源 -> WSL 集成”中没有看到集成,并且我没有在 Docker 桌面设置中启用 WSL2 后端。
只是我遇到了上述问题——我docker在任何地方工作,在 CMD、Powershell、git-bash 等中,只是不在我的 WSL 中。
我发现的所有解决方案都是在WSL1 或 WSL2 中安装适用于 Windows 的 Docker ,但我希望保持原样——WSL 和适用于 Windows 的 Docker彼此并行安装。
有什么解决办法吗?
在此 WSL 1 发行版中找不到命令“docker”。
我们建议将此发行版转换为 WSL 2 并
在 Docker 桌面设置中激活WSL 集成。
这意味着WSL2,它有它安装码头工人守护进程需要一个真正的Linux内核,那么docker-desktop你可以有机会在集码头工人守护进程WSL2。否则,docker 守护进程在Hyper-V machine. 但是,如果你坚持使用WSL1,就没有机会docker-daemon在 WSL 中运行,所以唯一的选择是docker daemon在Hyper-V machine.
虽然以上是事实,但我们仍然有机会让您像通过 bash 操作一样docker ps, docker pull在WSL1bash 中操作等CMD, Powershell, git-bash,即允许 Docker 接受来自远程主机的请求。
对于您的情况,接下来的步骤可能是:
1. 在docker desktop设置中暴露 docker daemon如下,然后点击Apply & Restart:
2. 安装独立的 docker 客户端WSL1:
$ wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.5.tgz
$ tar zxvf docker-20.10.5.tgz
$ cd docker
Run Code Online (Sandbox Code Playgroud)
3. 设置默认的 docker 守护进程:
$ export DOCKER_HOST=tcp://localhost:2375
Run Code Online (Sandbox Code Playgroud)
4.验证docker客户端命令:
$ ./docker info
Run Code Online (Sandbox Code Playgroud)
只是 FTA,这是我在尝试自己解决问题时发现的快速解决方法
将文件更改C:\Program Files\Docker\Docker\resources\bin\docker为
#!/usr/bin/env sh
#
# Copyright (c) Docker Inc.
binary=$(basename "$0")
"$binary.exe" "$@"
Run Code Online (Sandbox Code Playgroud)
那么docker现在可以在任何地方工作,在CMD、Powershell、git-bash、 以及WSL1。
请注意,这个 hacky 解决方法专门针对 OP 中描述的情况,可能不适用于其他任何情况。
| 归档时间: |
|
| 查看次数: |
2509 次 |
| 最近记录: |