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

当前回答

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

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快速启动终端运行命令也没有问题。

其他回答

我知道这个问题是很久以前的问题了,但我没有找到合适的解释和解决方案,所以希望我的答案是有用的:)

假设你在Windows上安装了Docker工具箱,Docker和Docker -machine命令都是可用的。通常,人们在使用这两种方法时都会感到困惑。

docker命令仅在虚拟机中用于管理映像。docker-machine命令用于在主机上管理Linux虚拟机。

所以,请在您的Windows机器上使用docker-machine命令。在虚拟机内部使用docker命令。要使用docker命令,例如docker ps,您可以打开docker快速启动终端,或者在cmd/bash/PowerShell上运行这些命令:

docker-machine run default /假设default是你的Linux虚拟机/

Docker-machine SSH默认

这将启动boot2docker,您将在命令行上看到docker图标。然后可以使用docker命令。

祝你好运。

确保您以“管理员”身份启动Powershell,这也将防止您从docker版本中得到的错误。

到2021年,这些提示可能会过时:

然后尝试启动docker服务:start-service docker 如果失败,删除docker。Pid文件,你可以在CD $env:programfiles\docker;rm docker.pid 最后,您应该将HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Containers\VSmbDisableOplocks更改为0或删除该值。

对我来说,在Windows 11上编辑%APPDATA%\Docker\settings。将json转换为以下值,然后重新启动Docker Desktop(我使用WSL2,而不是Hyper-V):

您需要管理员权限来运行该服务

我也遇到过类似的问题。当我运行命令提示符(以管理员身份运行)并输入“docker版本”时,问题就消失了。

C:\WINDOWS\system32>docker version


Client: Docker Engine - Community
 Version:           19.03.8
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        afacb8b
 Built:             Wed Mar 11 01:23:10 2020
 OS/Arch:           windows/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.8
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       afacb8b
  Built:            Wed Mar 11 01:29:16 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

1.—打开快捷方式的位置:

2.-右键单击和属性,并添加“- switchdaemon”到命运

3.-给予管理员权限,高级选项:

4.—重新启动windows。