我正在尝试在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.
显然有些道路搞砸了。有谁知道这是什么路径以及如何解决这个问题?
答案 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\default
是cert.pem
,key.pem
,ca-key.pem
和ca.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
答案 4 :(得分:6)
docker-machine env --shell cmd default
您将收到以下输出
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
复制突出显示的行并在cmd上执行
@FOR / f“tokens = *”%i IN('docker-machine env --shell cmd default')DO @%i
执行以下命令
docker ps
答案 5 :(得分:5)
我使用以下命令
创建了一台新机器docker-machine create --driver=virtualbox vbox-test
然后执行命令
docker-machine env --shell=powershell | Invoke-Expression
搞定了......
答案 6 :(得分:5)
我不得不在Windows上处理同样的问题。
要解决它:
创建一个泊坞机(仅当您没有)时
docker-machine create default
获取docker客户端所需的ENV变量以连接到docker机器(服务器)[这需要每次都进行或在ENV变量中设置]
docker-machine.exe env default
您可以手动安装或运行以下某项操作,具体取决于您的shell environment
(cmd
,bash
,power-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)
答案 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)
Windows开关可能会运行Linux也需要的缺少的配置。
答案 15 :(得分:0)
我从这个issue得到了解决方案。不仅Nikesh's answer说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
此命令只是将守护程序从defualt守护程序切换到另一个守护程序(取决于您设置的内容)。当您切换到另一个守护程序时,前一个守护程序上的图像和容器将消失(但不会丢失)。
答案 16 :(得分:0)
要在Windows中启动默认主机,我知道下面提供的三种方法,您可以使用其中一种。
由Docker启动或重新启动已创建的默认计算机:
docker-machine start default
docker-machine restart default
现在检查docker-machine env
需要设置以下环境属性:
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
使用以下命令创建新计算机:
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”这样的错误。
要解决此问题,
第二次重启后,上面的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
接下来,以管理员身份打开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)
答案 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
一切正常:)