docker - WSL2 无法连接到 Docker 守护程序
问题描述
这是我的设置:
Windows 10 PRO - build 19041.153
- 内幕节目 - 慢响Ubuntu 18.04LTS
WSL2 模式下的子系统Docker for desktop 2.2.0.4
- 启用 WSL2 与我的 Ubuntu 子系统的集成
我目前被迫使用Windows进行开发,所以我成为了microsoft Insider成员并以WSL2模式安装了ubuntu。Docker 桌面支持 WSL2 的集成,所以我尝试了它......一周以来它完美无缺。今天PC重启后,我无法让docker再次运行。Ubuntu 可以从 Docker 桌面看到注入的二进制文件,但它无法再连接到 Windows 托管的 docker daemon。
当我调用 subsys 终端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.
我已经尝试过的:
DOCKER_HOST=localhost:2375
使用,DOCKER_HOST=tcp://localhost:2375
,DOCKER_HOST=127.0.0.1:2375
,DOCKER_HOST=tcp://127.0.0.1:2375
=>等 envs 暴露没有 TLS 的守护进程相同的结果- 卸载 Docker 桌面并安装以前的版本
- 关闭win防火墙
我真的,真的需要这个工作。感谢您的任何想法。最奇怪的是它昨天工作,从那时起我没有对系统进行任何更改......
解决方案
我知道这对于目前的问题可能已经过时,但这应该可以节省我们宝贵的时间,尤其是当 Windows 20H1=2004 本月(2020 年 5 月)将投入生产时。
操作系统版本:Windows 10 教育版(与企业版相同,是专业版的超集)。
版本:2004
Build(版本操作系统):19041.264
其他:Windows 功能体验包 120.2202.130.0。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
外壳:WSL终端
首先,我之前已经安装了WSL v1,然后执行了升级到WSL v2的过程,并且出现了这个错误:“错误:无法在 tcp://localhost:2375 连接到 Docker 守护进程。docker 守护进程是否正在运行?”。
其次,为了解决这个问题,我按照此处所述的说明进行操作:Link,它起作用了。
第三,经过一些测试,我认为升级中缺少的更改是从 shell 的启动脚本中删除 DOCKER_HOST 变量。
摘要:就我而言,永久修复的程序应遵循以下步骤:
1.测试是否是您取消设置 DOCKER_HOST 变量的情况(见下图)。
2.如果上一步错误消失,那么是时候修复更改了,删除 shell 启动脚本中 DOCKER_HOST 变量的设置(在我的情况下是$HOME/.bashrc)。
对此进行了评论:
#export DOCKER_HOST=tcp://localhost:2375
#export DOCKER_BUILDKIT=1
注意:还包括 DOCKER_BUILDKIT。
3.关闭并打开终端。
推荐阅读
- python - 如何从powershell的2行输出中获取字符串
- angular - 使用角度 2 和引导程序获取多级选择值
- git - Git:无法将分支拉回本地(找不到远程参考)
- php - 避免使用相同数据的记录
- laravel - laravel中的CSRF错误
- c# - T 到 ActionResult 的隐式转换
不适用于某些类型 - voltdb - 如何在 VoltDB 中增加查询特定超时
- ruby-on-rails - RSpec:等待替代匹配
- android - 根据某些值平滑更改按钮的可绘制背景颜色
- mysql - 如何在 AWS Aurora (MYSQL) 中查看客户端与读取器和写入器的连接?