Docker命令失败(在Windows中)

时间:2016-05-30 14:16:34

标签: docker

我正在尝试在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.
显然有些道路搞砸了。有谁知道这是什么路径以及如何解决这个问题?

25 个答案:

答案 0 :(得分:56)

运行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泊坞窗文件所在的默认路径;虚拟机名称(由docker-machine create创建)为default和Virtual Box DHCP服务器的下限(在VirtualBox->文件 - >偏好设置 - >网络 - >主机网络 - 下找到 - >将鼠标悬停在VirtualBox仅限主机以太网适配器上)为192.168.99.100,并且VirtualBox中没有其他VM正在运行。

答案 1 :(得分:17)

Win 7上的问题相同。解决方案:

在Docker快速入门窗口中,在$提示符下运行以下行:

  

your_user @ your_machine MINGW64~

     

$ eval $(" C:\ Program Files \ Docker Toolbox \ docker-machine.exe" env default)

然后,您将能够运行" docker run hello-world"。

答案 2 :(得分:17)

使用docker-machine时我遇到了这个问题,重启后我还没有运行docker-machine env命令。我不确定如何在cmd.exe中执行此操作,但如果您正在使用powershell,请尝试发出此命令:

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

答案 3 :(得分:9)

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

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

答案 4 :(得分:6)

  1. 使用管理员权限打开cmd。
  2. 执行以下命令
      

    docker-machine env --shell cmd default

  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运行此命令配置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 ps

答案 5 :(得分:5)

我使用以下命令

创建了一台新机器
docker-machine create --driver=virtualbox vbox-test

然后执行命令

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

搞定了......

答案 6 :(得分:5)

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

要解决它:

  1. 创建一个泊坞机(仅当您没有)时

    docker-machine create  default
    
  2. 获取docker客户端所需的ENV变量以连接到docker机器(服务器)[这需要每次都进行或在ENV变量中设置]

    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
    

答案 7 :(得分:3)

我看了上面的所有答案,但都没有奏效。 然后我发现该命令必须在像bash这样的linux命令行上运行。 所以试试:

将命令输入Docker工具箱附带的Docker bash终端VM,而不是windows cmd

如果您已确定您的泊坞窗已启动

答案 8 :(得分:3)

正如其他答案中所指出的,您需要设置一些环境变量。

最简单的方法是:

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

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

如果您希望这些变量是持久的,请在windows(tutorial)中定义它们。

答案 9 :(得分:1)

右键单击托盘中的Docker图标,选择“切换到Windows容器...”。 系统可能会提示您启用容器功能。这样做并重新启动。

答案 10 :(得分:0)

我在运行命令docker-compose up时收到此错误。对我来说问题是,docker服务没有运行。所以我必须运行services.msc并启动docker服务。

enter image description here

答案 11 :(得分:0)

我有类似的问题。对我而言,我还没有从状态栏登录到docker。我所做的是从状态栏登录docker。登录后,我便能够正确运行所有命令。 尝试使用您的docker ID和密码登录,也许可以解决您的问题。

答案 12 :(得分:0)

我通过在bash中运行{DOCKER_TOOLBOX_INSTALL_PATH}start.sh解决了该错误。

答案 13 :(得分:0)

就我而言,上述所有解决方案均未解决。相反,zilurrane response有所帮助。

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

答案 14 :(得分:0)

  1. 切换到Windows容器
  2. 码头工人信息
  3. docker ps
  4. 切换回Linux容器
  5. 码头工人信息
  6. 中提琴!

Windows开关可能会运行Linux也需要的缺少的配置。

答案 15 :(得分:0)

我从这个issue得到了解决方案。不仅Nikesh's answerSwitchDaemon可以直接修复它。我认为您应该运行两次此命令以将守护程序切换到先前的守护程序。

cd "C:\Program Files\Docker\Docker"
./DockerCli.exe -SwitchDaemon
# then check the docker OS/Arch
docker version
# You may see the different OS/Arch 
./DockerCli.exe -SwitchDaemon
# then you got your images and containers back 

此命令只是将守护程序从defualt守护程序切换到另一个守护程序(取决于您设置的内容)。当您切换到另一个守护程序时,前一个守护程序上的图像和容器将消失(但不会丢失)。

答案 16 :(得分:0)

要在Windows中启动默认主机,我知道下面提供的三种方法,您可以使用其中一种。

  1. 由Docker启动或重新启动已创建的默认计算机:

    docker-machine start default
    docker-machine restart default
    

    现在检查docker-machine env

  2. 需要设置以下环境属性:

    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
    
  3. 使用以下命令创建新计算机:

Windows 10 / HyperV:

docker-machine create --driver hyperv default
docker-machine create -d hyperv default

Mac,Linux,Windows 7和8:

docker-machine create --driver virtualbox default
docker-machine create -d virtualbox default

答案 17 :(得分:0)

周末过后我看到了这条错误信息。在那之前我的设置很好。我的配置和连接看起来正确。 $docker-machine restart default在Windows 7上为我修复了

答案 18 :(得分:0)

当我在Windows 10上安装Docker CE for Windows Version 17.11.0-ce-rc4-win39(14244)频道:封面e557194时,我遇到了类似的问题。

在Command / cmd窗口中,当我尝试运行命令docker ps,docker version,docker info时,我每次都收到“连接时出错:获取http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.34/version”这样的错误。

要解决此问题,

  1. 我从“打开或关闭Windows功能”中关闭(未选中)“Hyper-V”,这需要重新启动操作系统。
  2. 首次重启后,我打开了“Hyper-V”(Checked),再次需要重新启动操作系统。
  3. 第二次重启后,上面的docker命令开始工作并提供正确的输出。

    因此,将Hyper-V 关闭然后打开解决了这个问题。

答案 19 :(得分:0)

错误确实令人不安。我希望Docker Developers能够做些什么。这需要大量的尝试和错误才能解决。感谢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 。遵循这些步骤,问题得到解决。 首先,我去了控制面板 - >打开或关闭Windows功能并取消选中Hyper-V
enter image description here 接下来,以管理员身份打开PowerShell:

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

重新启动我的系统。然后我启动了#34; Docker Quickstart终端"然后我在shell窗口中输入了它。

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

上面的大多数建议也很有帮助。

答案 20 :(得分:0)

对我来说,删除daemon.json

中的"%programdata%\docker\config"文件后,此错误已得到解决

daemon.json中的内容如下:

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

我作为一些测试的一部分手动创建了这个。但是在我重新启动服务器之后,我开始在这个问题中得到错误。

答案 21 :(得分:0)

Windows 10 Professional 对我来说,Docker服务正在运行,但Docker仍然需要启动'。也就是说,当你登录时,我有了设置' Start Docker'在Docker托盘图标中取消选中。

在找到这个之前,我已经去了程序文件夹Docker并点击了Docker for Windows'。在短时间内,消息“Docker”正在运行'显示了。

答案 22 :(得分:0)

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

更新后我遇到了这个问题。重新安装VB后,我在属性网络连接中打开了“VirtualBox NDIS6桥接网络驱动程序”。

在我的情况下,它的属性已关闭默认值。 `

答案 23 :(得分:0)

我在Windows 2016计算机上遇到过此问题。发生了因为码头服务没有启动。在我的情况下,docker服务失败并出现以下错误

致命:启动守护程序时出错:找到pid文件,确保docker未运行或删除C:\ ProgramData \ docker.pid

删除C:\ ProgramData \ docker.pid文件就可以了。

答案 24 :(得分:-1)

我在Windows 10上遇到了同样的问题。请在下面找到解决问题的方法:

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

一切正常:)