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\default
是cert.pem
, key.pem
, ca-key.pem
和ca.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上处理相同的问题。
要解决它:
-
创build一个docker机(只有你没有一个)
docker-machine create default
-
获得docker客户端所需的ENVvariables以连接到docker机(服务器)[这需要您每次都做或者在您的ENVvariables中设置]
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
- 用pipe理员权限打开cmd。
- 执行以下命令
docker-machine env –shell cmd默认
-
您将收到以下输出
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
-
复制突出显示的行并在cmd上执行
@FOR / f“tokens = *”%i IN('docker-machine env –shell cmd default')DO @%i
-
执行以下命令
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/版本 “。
要解决这个问题,
- 我从“打开或closuresWindowsfunction”中closures(取消选中)“Hyper-V”,这要求重新启动操作系统。
- 第一次重启之后,我开启了“Hyper-V”(勾选),这又要求重启操作系统。
第二次重启后,上面的docker命令开始工作,并给予适当的输出。
所以,closuresHyper-V然后为我解决这个问题。