Docker命令失败(在Windows中)

我正试图在Windows机器上使用Docker,并且看起来像是遇到了每一个可能的问题。 我最近的一个是这样的:我的机器正在运行,但我似乎无法使用docker命令与它进行交互。 如果我运行一个非常标准的命令,如:

docker ps 

我收到如下错误消息:

 An error occurred trying to connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v 1.23/containers/json: open //./pipe/docker_engine: The system cannot find the file specified. 

所以显然有一些path都搞砸了。 有谁知道这是什么path,以及如何解决这个问题?

当运行docker ps并接收:

尝试连接时发生错误:获取http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json :打开//./pipe/docker_engine:系统找不到指定的文件。

需要设置以下环境属性:

  set DOCKER_CERT_PATH=%USERPROFILE%\.docker\machine\machines\default set DOCKER_HOST=tcp://192.168.99.100:2376 set DOCKER_MACHINE_NAME=default set DOCKER_TLS_VERIFY=1 

这假定%USERPROFILE%\.docker\machine\machines\defaultcert.pemkey.pemca-key.pemca.pem文件的默认path; 虚拟机名称(由docker-machine create )是default ,Virtual Box DHCP Server的下限(在VirtualBox-> File-> Preferences-> Network-> Host-only Networks->hover鼠标上的VirtualBox Host-Only以太网适配器)是192.168.99.100,VirtualBox中没有其他虚拟机正在运行。

在使用docker-machine的时候遇到了这个问题,重启后我还没有运行docker-machine env命令。 我不知道如何在cmd.exe中执行此操作,但是如果您使用的是powershell,请尝试执行以下命令:

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

解决scheme:

在Docker快速启动窗口中的$提示符下运行下面的行:

your_user @ your_machine MINGW64〜

$ eval $(“C:\ Program Files \ Docker Toolbox \ docker-machine.exe”env默认)

然后,你就可以运行“docker run hello-world”了。

确保Hyper-V已启动并正在运行:

  • 打开提升命令提示符
  • 键入bcdedit /set hypervisorlaunchtype auto
  • 重启
  • 运行“Docker for Windows”

我使用下面的命令创build了一台新机器

 docker-machine create --driver=virtualbox vbox-test 

然后执行命令

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

知道了工作…

我看了以上所有的答案,没有一个工作。 然后我发现命令必须在bash之类的linux命令行上运行。 所以试试:

将命令键入泊坞窗工具箱随附的Docker bashterminalVM中,而不是Windows cmd

如果您已经确定您的docker已经启动

正如在其他答案指出,你需要设置一些环境variables。

最简单的方法是:

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

这将运行docker-machine env --shell cmd并添加这些环境variables。

如果你想让这些variables在Windows( 教程 )中持久定义它们。

我不得不在Windows上处理相同的问题。

要解决它:

  1. 创build一个docker机(只有你没有一个)

     docker-machine create default 
  2. 获得docker客户端所需的ENVvariables以连接到docker机(服务器)[这需要您每次都做或者在您的ENVvariables中设置]

     docker-machine.exe env default 

    您可以手动安装它们,也可以根据您的shell environmentcmdbashpower-shell )运行以下任一项

     docker-machine env --shell=cmd # you need to run it manually docker-machine env --shell=bash > env-var-commands-tmp && . env-var-commands-tmp && rm env-var-commands-tmp docker-machine env --shell=powershell | Invoke-Expression 
  1. 用pipe理员权限打开cmd。
  2. 执行以下命令

    docker-machine env –shell cmd默认

  3. 您将收到以下输出

    SET DOCKER_TLS_VERIFY = 1

    SET DOCKER_HOST = tcp://192.168.99.102:2376

    SET DOCKER_CERT_PATH = C:\ Users \ DBashyal.docker \ machine \ machines \ default

    SET DOCKER_MACHINE_NAME =默认

    REM运行这个命令来configuration你的shell:

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

  4. 复制突出显示的行并在cmd上执行

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

  5. 执行以下命令

    docker工人

在我的情况下,docker服务没有运行,重新启动后,所以我刚刚开始

我在Windows 2016机器上遇到了这个问题。 发生,因为docker服务没有启动。 在我的情况下,docker服务失败,出现以下错误

致命错误:启动守护进程:findpid文件,确保docker没有运行或删除C:\ ProgramData \ docker.pid

删除C:\ ProgramData \ docker.pid文件的窍门。

在托盘中,Docker正在运行,但是在Docker-> Settings中是status:无法启动。 点击重新启动Docker修复错误

下面解决。 我复制了另一个论坛的答案

更新后我有这个问题。 重新安装VB后我打开“VirtualBox NDIS6桥接networking驱动程序”属性networking连接。

在我的情况下,它的属性closures了默认值。 `

Windows 10专业版对于我来说,Docker服务正在运行,但Docker仍然需要“启动”。 也就是说,我在Docker托盘图标中取消选中了“login时启动Docker”设置。

在find这个之前,我已经进入程序文件夹Docker并点击“Docker for Windows”。 短时间后显示消息“Docker正在运行”。

我在Windows 10上遇到了同样的问题。查找下面我做了什么来解决它:

安装Docker之后,只需重新启动你的PC,运行Docker应用程序(可能需要启用Hyper-V),然后打开命令行并键入: docker run hello-world

一切工作正常:)

对于我来说,在我删除了"%programdata%\docker\config" daemon.json "%programdata%\docker\config" daemon.json文件后,

我的daemon.json中的内容如下:

 { "hosts": ["tcp://0.0.0.0:2375"] } 

我手动创build这个作为一些testing的一部分。 但是,当我重新启动服务器后,我开始得到这个问题的错误。

这个错误真的很麻烦。 我希望Docker开发者能做些什么。 绕了很多尝试和错误。 感谢Stackoverflow和其他博客。 就我而言,我正在使用Windows 10 Pro。 我用Docker for Windows Installer.exe尝试了几次失败后,用DockerToolbox.exe解决了问题。 然后我遇到An error occurred trying to connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v 。 随之而来的这些步骤和问题就解决了。 首先,我去了控制面板 – >打开或closuresWindowsfunction,并取消选中Hyper-V
在这里输入图像说明 接下来,以pipe理员身份打开PowerShell:

 docker-machine env --shell=powershell | Invoke-Expression type bcdedit /set hypervisorlaunchtype auto 

重新启动我的系统。 然后我启动“Docker快速入门terminal”,然后我在shell窗口中input。

 run "Docker for Windows" docker run hello-world 

我做得很好。 然后我打开命令提示符

 docker run hello-world 

它给了错误:然后我进入

 set DOCKER_CERT_PATH=%USERPROFILE%\.docker\machine\machines\default set DOCKER_HOST=tcp://192.168.99.100:2376 set DOCKER_MACHINE_NAME=default set DOCKER_TLS_VERIFY=1 

上面的大部分build议也是有帮助的。

右键单击托盘中的Docker图标,select“切换到Windows容器…”。 您可能会提示您启用容器function。 这样做,然后重新启动。

当我在Windows 10上安装Docker CE for Windows版本17.11.0-ce-rc4-win39(14244)Channel:edge e557194时遇到了类似的问题。

在命令/ CMD窗口中,当我试图运行命令dockerPS,docker版本,docker信息,我得到错误,如“连接过程中的错误:获取http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.34/版本 “。

要解决这个问题,

  1. 我从“打开或closuresWindowsfunction”中closures(取消选中)“Hyper-V”,这要求重新启动操作系统。
  2. 第一次重启之后,我开启了“Hyper-V”(勾选),这又要求重启操作系统。

第二次重启后,上面的docker命令开始工作,并给予适当的输出。

所以,closuresHyper-V然后为我解决这个问题。