Docker命令失败(在Windows中)


68

我试图在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.

因此,显然有些路径被弄乱了。有谁知道这是哪条路以及如何解决?


1
在托盘中,Docker正在运行,但是在Docker-> Settings中,状态为:无法启动。点击重新启动泊坞窗修正错误
СергейПетроченко

您正在使用哪个版本的Windows?
humblebee '17

Answers:


59

运行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\default是默认路径,其中cert.pemkey.pemca-key.pem,和ca.pem搬运工文件; 虚拟机名称(由创建docker-machine create)是default,Virtual Box DHCP服务器的下限(位于VirtualBox仅主机以太网适配器上的VirtualBox-> File-> Preferences-> Network-> Host-only Networks-> hover鼠标下)是192.168。 99.100,VirtualBox中没有其他VM在运行。


谢谢,这对我有用,但是每次我打开命令提示符时,我都必须运行这些命令。有什么办法可以永久设置值。
HyperioN


1
设置参数后,我得到以下消息:尝试连接时发生错误:张贴xxx.xx.xx:2376 / v1.24 / imag es / create?fromImage = hello-world&tag = latest:拨打tcp xx.xxx。 xx.xx:2376:连接tex:连接尝试失败,因为一段时间后被连接方未正确响应,或者连接建立失败,因为连接的主机无法响应。其中xxx是下限。
TechTurtle

4
如果执行docker-machine env --shell cmd,它将显示这些指令以及运行它们的可复制粘贴的速记
nathanleclaire

@TechTurtle您需要设置代理
HankCa '17

19

在Win 7上也存在同样的问题。解决方案:

在Docker Quickstart窗口中,在$提示符下运行以下行:

your_user @ your_machine MINGW64〜

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

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


17

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

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

1
这对我有用,我们知道为什么它可以解决这个问题吗?我以前没有,但是我认为MS更新破坏了Docker。我想要一个解决方案。
hamsterofdark

1
@hamsterofdarkdocker-machine env显示命令,将您的外壳配置为使用Docker客户端,而不管该外壳是什么(如果不包含该shell参数,它将尝试自动检测该外壳)。Aurath的答案会立即调用返回的命令。
跳闸

6
Error: No machine name(s) specified and no "default" machine exists
Chloe

10

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

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

5
为了消除一些困惑:在Windows上安装docker有两个版本:“ Docker Toolbox”(较旧的版本,使用VirtualBox)和“ Docker for Windows”(较新的版本,使用本机Hyper-V)。如果您正在运行Docker Toolbox,请参阅其他答案。如果您正在运行Windows的Docker,请使用此答案。
pretzels1337

6
  1. 使用管理员权限打开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运行以下命令以配置您的shell:

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

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

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

  5. 执行以下命令

    码头工人ps


默认是未定义的。如何首先定义它
-Muhaimin

Error: No machine name(s) specified and no "default" machine exists
Chloe

5

我使用以下命令创建了新机器

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

然后执行命令

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

正常工作...


5

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

解决方法:

  1. 创建一个docker机器(仅当您没有)

    docker-machine create  default
    
  2. 获取docker客户端连接到docker机器(服务器)所需的ENV变量[您每次都需要做或在您的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
    

就我而言,我已经运行过:docker-machine create default --virtualbox-no-vtx-check
Tiago Medici

3

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

将命令键入docker工具箱随附的Docker bash终端VM,而不是Windows cmd

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


3

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

最简单的方法是:

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

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

如果您希望这些变量是持久性的,则可以在Windows中定义它们(教程)。


Error: No machine name(s) specified and no "default" machine exists
Chloe

2

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


2

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

默认机器已经存在,所以你会想给一些其他的名字
自由职业者

1

当我在Windows 10上为Windows版本17.11.0-ce-rc4-win39(14244)安装Docker CE时遇到类似的问题:边缘e557194

在Command / cmd窗口中,当我尝试运行命令docker ps,docker版本,docker info时,出现类似“连接期间出错的错误:获取http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.34/版本”。

为了解决这个问题,

  1. 我从“打开或关闭Windows功能”中关闭了“ Hyper-V”(未选中),这需要重新启动操作系统。
  2. 第一次重新启动后,我打开了“ Hyper-V”(选中),再次要求重新启动操作系统。

第二次重启后,上述docker命令开始工作并提供适当的输出。

所以,把Hyper-V的关闭,然后解决了这个问题对我来说。


1

我从这个问题中得到了解决方案。这不仅像耐克什的回答所说的那样SwitchDaemon可以直接解决。我认为您应该运行两次此命令以将守护程序切换到先前的守护程序。

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 

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


./DockerCli.exe -SwitchDaemon只跑了一次,一切都固定了。谢谢。
UserControl

0

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

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

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


0

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

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

在我的情况下,该属性默认关闭。 `


0

Windows 10 Professional对我而言,Docker服务正在运行,但仍需要“启动” Docker。也就是说,我在Docker托盘图标中未选中“登录时启动Docker”设置。

在发现这个问题之前,我先进入程序文件夹Docker,然后单击“ Windows的Docker”。短时间后,显示消息“ Docker正在运行”。


0

对我来说,删除daemon.json文件后,此错误已解决"%programdata%\docker\config"

我的内容daemon.json如下:

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

我在一些测试中手动创建了此文件。但是,在重新启动服务器之后,我开始收到此问题中的错误。


@Chloe默认情况下未创建文件,因此您的系统找不到它。对于面临此问题的人们来说,这是一个很好的答案,并且是一个潜在的解决方案
darkwing

>dir "%programdata%\docker\config" The system cannot find the file specified.
Chloe

0

该错误确实令人不安。我希望Docker开发人员能有所作为。要花很多时间才能解决问题。感谢Stackoverflow和其他博客。就我而言,我正在使用Windows 10 Pro。在Docker for Windows Installer.exe几次尝试失败后,我选择了DockerToolbox.exe。然后我遇到了。遵循了这些步骤,问题就解决了。首先,我进入“控制面板”->“打开或关闭Windows功能”并取消选中Hyper-V, 然后,以管理员身份打开PowerShell: An error occurred trying to connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v
在此处输入图片说明

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

重新启动我的系统。然后,我启动了“ Docker Quickstart Terminal”,然后在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

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


0

一个周末后,我看到了此错误消息。在此之前,我的设置很好。我的配置和连接看起来正确。$docker-machine restart default在Windows 7上为我修复了它


Docker machine "default" does not exist. Use "docker-machine ls" to list machines. Use "docker-machine create" to add a new one.
Chloe


0

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



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

Windows交换机可能会运行Linux也需要的缺少的配置。


0

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


-1

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

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

一切正常:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.