Docker 无法在 Windows 上启动。

451

Windows 上执行 docker version 命令将返回以下结果:

C:\Projects> docker version
Client:
 Version:      1.13.0-dev
 API version:  1.25
 Go version:   go1.7.3
 Git commit:   d8d3314
 Built:        Tue Nov  1 03:05:34 2016
 OS/Arch:      windows/amd64
error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.25/version: open //./pipe/docker_engine: The system cannot find the file
specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.

运行诊断程序会产生以下结果:

C:\Projects> wget https://github.com/Microsoft/Virtualization- 
Documentation/raw/master/windows-server-container-tools/Debug- 
ContainerHost/Debug-ContainerHost.ps1 -UseBasicParsin | iex

Checking for common problems
Describing Windows Version and Prerequisites
 [+] Is Windows 10 Anniversary Update or Windows Server 2016 608ms
 [+] Has KB3192366, KB3194496, or later installed if running Windows build 14393 141ms
 [+] Is not a build with blocking issues 29ms
Describing Docker is installed
 [-] A Docker service is installed - 'Docker' or 'com.Docker.Service'  134ms
   Expected: value to not be empty
   27:         $services | Should Not BeNullOrEmpty
   at <ScriptBlock>, <No file>: line 27
 [+] Service is running 127ms
 [+] Docker.exe is in path 2.14s
Describing User has permissions to use Docker daemon
 [+] docker.exe should not return access denied 42ms
Describing Windows container settings are correct
 [-] Do not have DisableVSmbOplock set to 1 53ms
   Expected: {0}
   But was:  {1}
   66:              $regvalue.VSmbDisableOplocks | Should Be 0
   at <ScriptBlock>, <No file>: line 66
 [+] Do not have zz values set 42ms
Describing The right container base images are installed
error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.25/images/json: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.
 [-] At least one of 'microsoft/windowsservercore' or 'microsoft/nanoserver' should be installed 129ms
   ValidationMetadataException: The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.
   ParameterBindingValidationException: Cannot validate argument on parameter 'Property'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.
   at <ScriptBlock>, <No file>: line 90
Describing Container network is created
 [-] Error occurred in Describe block 1.08s
   RuntimeException: Cannot index into a null array.
   at <ScriptBlock>, <No file>: line 119
Showing output from: docker info

Showing output from: docker version
Client:
 Version:      1.13.0-dev
 API version:  1.25
 Go version:   go1.7.3
 Git commit:   d8d3314
 Built:        Tue Nov  1 03:05:34 2016
 OS/Arch:      windows/amd64

Showing output from: docker network ls

Warnings & errors from the last 24 hours
Logs saved to C:\Projects\logs_20161107-084122.csv
C:\Projects>

32
我得出结论,Windows 上的技术还不够成熟。在技术成熟之前,请使用 Linux Docker。 - Jim
使用此命令 docker-machine create box。请参考 https://github.com/docker/toolbox/issues/636。 - Mr Nobody
请确保您已经按照文档 https://docs.docker.com/machine/get-started/ 中的设置步骤进行了操作。 - fanny
有时在初始安装时会出现这种情况,但只需完成勾选接受服务级别协议的程序即可。通常,在电脑上搜索Docker桌面并单击其图标即可。 - Gilbert
1
同样适用于2021年:在问题中提到的诊断脚本的更新URL是 wget https://github.com/Microsoft/Virtualization-Documentation/raw/main/windows-server-container-tools/Debug-ContainerHost/Debug-ContainerHost.ps1 -UseBasicParsin | iex - Ben Seymour
显示剩余3条评论
61个回答

3
如果其他答案都无法解决您的问题,请尝试以下方法: 打开终端并运行:
wsl -l -v 

如果您发现Docker桌面应用程序处于“安装”状态,无法关闭,请关闭Docker,以管理员身份运行PowerShell并注销Docker桌面应用程序:

PS C:\WINDOWS\system32> .\wslconfig.exe /u docker-desktop

尝试重新启动 Docker 服务,希望问题能够得到解决。如果没有成功,可以先卸载 Docker,然后注销 docker-desktop,最后重新安装 Docker。

来源:https://github.com/docker/for-win/issues/7295#issuecomment-645989416


2

确保你已经启用了Hyper-V,在我的情况下这就是问题所在。


1

我的情况是我在WSL shell中运行docker命令,而且仍然能够这样做,但在git-bash(或另一个基于Windows的shell)中,我遇到了这个错误。

对我来说,解决方案是这个答案,但是需要重新启动Windows。


1

对于Windows - 打开'Docker for Desktop' --> 点击调试图标 -> 点击'Reset to factory defaults'


1

我从头开始安装了Docker,遇到了这个问题。通过安装WSL解决了它。

wsl --install

1
一开始安装并重启系统后,我的Docker桌面无法启动,所以我在任务管理器中结束了Docker进程,然后重新打开Docker桌面,它就成功启动了。现在我可以通过cmd命令行运行项目(docker run -d -p <project_name>),也能在Docker桌面中看到我的容器镜像。
图片链接:enter image description here

0

尝试从提升的命令提示符中运行以下命令:

SET DOCKER_CERT_PATH=C:\Users\[YourName]\.docker\machine\machines\default
SET DOCKER_HOST=tcp://[yourDockerDeamonIp]:2376
SET DOCKER_MACHINE_NAME=default
SET DOCKER_TLS_VERIFY=1
SET DOCKER_TOOLBOX_INSTALL_PATH=C:\Program Files\Docker Toolbox

你可能会发现,即使没有设置那些环境变量,在 Docker 快速启动终端中运行命令也没有问题。


我们可以解释一下这些命令的作用吗?我不希望将我的DOCKER_HOST设置为一个我知道在我的网络中不存在的IP地址。 - Bobort
抱歉,那是我的Docker守护进程的本地IP地址。我已经将其删除了。 - KidCode

0

这可能是因为Docker守护程序选择了Linux并出现了故障 尝试使用以下命令切换到Windows或Linux 使用管理员启动PowerShell并运行以下命令

'C:\Program Files\Docker\Docker\DockerCli.exe' -SwitchDaemon

或者以管理员身份打开cmd提示符,并运行以下命令

"C:\Program Files\Docker\Docker\DockerCli.exe" -SwitchDaemon

0

根据@Manuel Larrota的回答,我还需要在Windows任务管理器中结束所有与Docker相关的进程,然后单击Docker快捷图标启动Docker。最终我在我的机器上获得了一个完全运行的Docker实例。 在此输入图片描述


0

遇到了类似的问题,我在运行于WSL2上的Windows虚拟机上安装了Docker桌面版。

解决方案:

将Windows更新到最新版本,并将VMTools更新到最新版本(11.2),问题得到解决,现在Docker可以持续运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接