docker不能在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 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> 

错误代码:

连接时发生错误:Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.29/version :open //./pipe/docker_engine:系统找不到指定的文件。 在Windows的默认守护进程configuration中,docker客户端必须运行提升才能连接。 这个错误也可能表明docker守护进程没有运行。

解决scheme:

1)对于Windows 7命令窗口(cmd.exe),以pipe理员身份运行并打开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,以pipe理员身份打开powershell.exe并执行以下命令:

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

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

 docker version 

3)如果你重新打开cmd或powershell,你应该重复相关的步骤。

对我来说,问题是虚拟化没有启用。

在Windows 10上:转到任务pipe理器 – >性能 – > CPU,你应该看到“Virtualization:Enabled”

如果您看不到此选项,则表示虚拟化尚未启用。

另一个值得注意的事情是你必须启用Hyper V。 但是,当我使用parallels桌面时,我必须启用Hyper V的“嵌套虚拟化”才能“真正启用”。 因此,如果您的Windows是虚拟机,请检查Parallels(或您正在使用的任何设置)启用嵌套虚拟化的设置。

我正在使用Docker Toolbox的Windows 7,并修复它只是打开Docker快速入门terminal。

$ docker版本客户端:版本:17.05.0-ce API版本:1.29 Go版本:go1.7.5 Git commit:89658be内置:五月5日15:36:11 OS / Arch:windows / amd64

服务器:版本:17.05.0-ce API版本:1.29(最低版本1.12)Go版本:go1.7.5 Git commit:89658be内置:Thu May 4 21:43:09 2017 OS / Arch:linux / amd64实验:false

对我来说,答案是closuresVPN服务。 在工作中,连接到一个VPN,我得到的错误提到。 我关掉了VPN,然后docker按照预期在Windows 10上工作。下面的命令(完成时)会让你进入交互式Python提示“>>>”,并预先安装simplejsonrequests

 docker run --rm -ti -v `pwd`:/tmp jfloff/alpine-python:2.7-slim -p simplejson -p requests 

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

 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 

您甚至可能会发现,即使没有设置这些envvariables,来自docker快速启动terminal的运行命令也没有问题。

我在Windows上有同样的错误。 原来我错过了容器function。

 Install-WindowsFeature Containers 

重新启动服务器

启动并运行时确保Docker服务正在运行

第一次启动Powershell“作为pipe理员”,这也将防止你从docker version得到的错误。

尝试启动docker服务: start-service docker docker如果该操作失败,则删除docker.pid文件,您将使用cd $env:programfiles\docker; rm docker.pid cd $env:programfiles\docker; rm docker.pid
最后,您应该将HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Containers\VSmbDisableOplocks0或删除该值。

出现此错误时,您可以启动Kitematic。 它会显示一个button来重置虚拟机,并将解决这个问题。

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

  1. 在BIOS中启用虚拟化
  2. 安装 hyper-v