这是我的设置:
Windows 10 PRO - build 19041.153
- 内测程序 - 慢环Ubuntu 18.04LTS
WSL2 模式下的子系统Docker for desktop 2.2.0.4
- 启用 WSL2 与我的 Ubuntu 子系统的集成
目前迫不得已使用Windows进行开发,于是成为了微软的Insider会员,安装了WSL2模式的ubuntu。Docker 桌面支持 WSL2 的集成,所以我试了一下......
一个星期以来,它完美无缺地工作。今天重启电脑后,我无法让docker再次运行。Ubuntu 可以从 Docker 桌面看到注入的二进制文件,但它无法再连接到 Windows 托管的 docker 守护进程。
当我调用 WSL 终端时,docker info
它返回
$ docker info
Client:
Debug Mode: false
Server:
ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
errors pretty printing info
或与docker-compose up
ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?
If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.
我已经尝试过的:
- 在没有 TLS 的情况下使用类似
DOCKER_HOST=localhost:2375
,DOCKER_HOST=tcp://localhost:2375
,DOCKER_HOST=127.0.0.1:2375
,DOCKER_HOST=tcp://127.0.0.1:2375
=> 相同结果的环境公开守护进程 - 卸载 Docker 桌面并安装以前的版本
- 关闭 Windows 防火墙
我真的,真的需要这个来工作。感谢您的任何想法。最奇怪的是它昨天工作,从那时起我没有对系统进行任何更改......
我知道这对于当前的问题可能已经过时了,但这应该可以节省我们宝贵的时间,尤其是当 Windows 20H1=2004 本月(2020 年 5 月)投入生产时。
操作系统版本:Windows 10 Education(与 Enterprise 相同,是 Pro 的超集)。
版本:2004
Build(操作系统版本):19041.264
其他:Windows 功能体验包 120.2202.130.0。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
外壳:WSL终端
首先,我之前安装了WSL v1 ,然后执行升级到WSLv2的过程,出现了这个错误:“ERROR: Cannot connect to the Docker daemon at tcp://localhost:2375. Is the docker daemon running?”。
其次,为了修复该错误,我按照此处说明的说明进行操作:链接,它起作用了。
第三,经过一些测试后,我认为升级中缺少的更改是DOCKER_HOST
从 shell 的启动脚本中删除变量。
摘要:就我而言,永久修复的过程应该是以下步骤:
1.测试它是否是你的案例取消设置DOCKER_HOST
变量(见下图)。
2.DOCKER_HOST
如果错误在上一步中消失,那么是时候通过删除shell 启动脚本中的变量设置来修复更改(在我的例子中是*$HOME/.bashrc*
)。
评论了这个:
#export DOCKER_HOST=tcp://localhost:2375
#export DOCKER_BUILDKIT=1
注意:还包括DOCKER_BUILDKIT
。
3.关闭并打开终端。
如果它可以帮助遇到此问题的其他任何人,那么对我来说,事实证明我的子系统突然(并且“独立”)在 docker 的资源 > WSL 集成设置中被勾选。
在 Docker Desktop 应用程序上,我必须手动启用我的发行版集成
Settings > Resources > WSL Integration
我已经尝试了很多东西,以及对我有用的东西,但从来没有人提到要尝试:
(来自 Windows Powershell)
wsl --set-default <my-distro>
然后,我可以在不更改DOCKER_HOST
var 的情况下连接到 docker。
我已经按照建议安装了 Docker for Windows,以便将其与WSL 2一起使用,这确实会为您启动 docker 守护进程。但我不需要它提供的所有花哨功能,所以删除了它,很高兴看到大约 4GB 的空间被释放并且系统托盘中没有额外的图标。
现在,如果我需要运行 docker 命令,我会从以下开始:
sudo dockerd &
这样我就可以让它在同一个 shell 的后台运行。请注意,在此示例中,我的设置sudo
没有密码。如果需要密码,我可以sudo dockerd
打开另一个终端选项卡。
1.open windows docker desktop --> Setting --> General --> Disable Expose daemon on tcp://localhost:2375 without TLS
2.然后转到设置 --> 资源 --> WSL 集成 --> 取消选中启用与我的默认 WSL 发行版的集成并关闭与发行版的集成
3.点击应用并重启
4.然后去ubuntu试试docker ps
docker ps
如果不行,继续运行下面命令
unset DOCKER_HOST
禁用DOCKER_HOST
今天刚试成功
祝你好运
我发现我的问题是由于误读说明造成的,在我的 Windows 版本 1909 和 WSL 2 上已修复,在 CMD 上使用以下命令:
wsl.exe -l -v
wsl.exe --set-version ${distro-name} ${wsl version}
例子:
C:\Users\xxxxx>wsl.exe -l -v
NAME STATE VERSION
* Ubuntu-18.04 Running 1
docker-desktop-data Running 2
docker-desktop Running 2
C:\Users\xxxxx>wsl.exe --set-version Ubuntu-18.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
就是这样
问题:无法连接到位于 tcp://127.0.0.1:2375 的 Docker 守护程序
电源外壳
wsl -l -v # ALL DISPLAY "2"
Linux
unset DOCKER_HOST
/etc/init.d/docker restart
重启 Docker
windows docker restart
windows firewall off
Linux docker 进程
docker ps
我遇到了同样的问题,我的解决方案是将我的 Ubuntu 设置为默认的 wsl 发行版:wsl --set-default Ubuntu