在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>

当前回答

我的解决办法很简单。我注意到docker运行的是linux容器而不是windows容器。我所做的是通过右键单击系统托盘中的docker图标并选择切换到windows容器来切换到windows容器。

其他回答

错误代码:

连接过程中出现错误:Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.29/version:开放 / /。/pipe/docker_engine:系统找不到指定的文件。在 Windows上的默认守护进程配置,必须运行docker客户端 抬高连接。此错误也可能表明docker Daemon未运行。

解决方案:

1)对于Windows 7命令窗口(cmd.exe),以管理员身份打开cmd.exe,执行如下命令:

docker-machine env --shell cmd default

您将收到以下输出:

SET DOCKER_TLS_VERIFY=1
SET DOCKER_HOST=tcp://192.168.99.100:2376
SET DOCKER_CERT_PATH=C:\Users\USER_NAME\.docker\machine\machines\default
SET DOCKER_MACHINE_NAME=default
SET COMPOSE_CONVERT_WINDOWS_PATHS=true
REM Run this command to configure your shell:
REM @FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd default') DO @%i

复制下面的命令并在cmd上执行:

@FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd default') DO @%i

然后执行以下命令进行控制:

docker version

2)对于Windows 7 Powershell,以管理员身份运行Powershell .exe,执行以下命令:

docker-machine env --shell=powershell | Invoke-Expression

然后执行以下命令进行控制:

docker version

3)如果重新打开cmd或powershell,应再次重复相关步骤。

我也遇到了同样的问题。我通过启用hyper-v解决了这个问题。

在BIOS中开启虚拟化 安装hyper - v

我在Docker 19.03.12版和Windows 10版上得到了同样的错误。通过以下步骤解决这个问题。希望它能帮助别人。

Go to Windows Start -> Search Box (Type here to search). There enter 'Services'. Among the listed items, click Services app. Now search 'Docker Desktop Service' in the Services window opened. Right click on it and Start the service. Its status should be changed to 'Running'. If step 2 gives error like 'the dependency service failed to start', then start all dependency services. For me, I had to start a service called 'Server'. Double click 'Docker Desktop' icon in desktop. Now you will see 'Docker Desktop is running' in system tray. Now run the command 'docker version' from Command Prompt or PowerShell. It should give clean output. If any issue in step 5, run Command Prompt or PowerShell as administrator.

上述解决方案假设Docker已经安装,并且在您的系统中启用了Hyper-V / Virtualization。

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

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

您可能还会发现,即使不设置这些env变量,从docker快速启动终端运行命令也没有问题。

我解决这个问题的最简单的方法是终止docker桌面并重新启动它。如果您在左下角看到一个蓝色的docker图标,那么这意味着docker守护进程已经成功启动,上面的错误应该得到修复。