Docker 无法在 Windows 上启动
Posted
技术标签:
【中文标题】Docker 无法在 Windows 上启动【英文标题】:Docker cannot start on Windows 【发布时间】:2017-03-20 10:45:36 【问题描述】:在 Windows 上执行 docker version
命令会返回以下结果:
C:\Projects> docker version
Client:
Version: 1.13.0-dev
API version: 1.25
Go version: go1.7.3
Git commit: d8d3314
Built: Tue Nov 1 03:05:34 2016
OS/Arch: windows/amd64
error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.25/version: open //./pipe/docker_engine: The system cannot find the file
specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.
运行诊断会产生以下结果:
C:\Projects> wget https://github.com/Microsoft/Virtualization-
Documentation/raw/master/windows-server-container-tools/Debug-
ContainerHost/Debug-ContainerHost.ps1 -UseBasicParsin | iex
Checking for common problems
Describing Windows Version and Prerequisites
[+] Is Windows 10 Anniversary Update or Windows Server 2016 608ms
[+] Has KB3192366, KB3194496, or later installed if running Windows build 14393 141ms
[+] Is not a build with blocking issues 29ms
Describing Docker is installed
[-] A Docker service is installed - 'Docker' or 'com.Docker.Service' 134ms
Expected: value to not be empty
27: $services | Should Not BeNullOrEmpty
at <ScriptBlock>, <No file>: line 27
[+] Service is running 127ms
[+] Docker.exe is in path 2.14s
Describing User has permissions to use Docker daemon
[+] docker.exe should not return access denied 42ms
Describing Windows container settings are correct
[-] Do not have DisableVSmbOplock set to 1 53ms
Expected: 0
But was: 1
66: $regvalue.VSmbDisableOplocks | Should Be 0
at <ScriptBlock>, <No file>: line 66
[+] Do not have zz values set 42ms
Describing The right container base images are installed
error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.25/images/json: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.
[-] At least one of 'microsoft/windowsservercore' or 'microsoft/nanoserver' should be installed 129ms
ValidationMetadataException: The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.
ParameterBindingValidationException: Cannot validate argument on parameter 'Property'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.
at <ScriptBlock>, <No file>: line 90
Describing Container network is created
[-] Error occurred in Describe block 1.08s
RuntimeException: Cannot index into a null array.
at <ScriptBlock>, <No file>: line 119
Showing output from: docker info
Showing output from: docker version
Client:
Version: 1.13.0-dev
API version: 1.25
Go version: go1.7.3
Git commit: d8d3314
Built: Tue Nov 1 03:05:34 2016
OS/Arch: windows/amd64
Showing output from: docker network ls
Warnings & errors from the last 24 hours
Logs saved to C:\Projects\logs_20161107-084122.csv
C:\Projects>
【问题讨论】:
我得出的结论是该技术在windows上并不成熟。在技术成熟之前使用 Linux docker。 使用这个命令 docker-machine create box github.com/docker/toolbox/issues/636 确保您已遵循文档中的所有设置步骤:docs.docker.com/machine/get-started 对于 2021 年在 Docker 升级后遇到问题的任何人来说,Windows 上的技术似乎变得更好了一点,但最适合我的是经典的 Microsoft 清理。请注意,这将删除您所有的图像和容器,并相应地备份它们!通过添加/删除程序卸载 Docker,删除 C:\Users\YOURUSERNAME\AppData\Roaming (& Local) 文件夹中的所有数据,重新下载最新的 Docker 桌面并重新安装。 @Jim 我们最近在我们的 docker build 服务器上遇到了这个问题,该服务器在多个登录用户之间共享,用于使用自托管代理的 Azure devops 构建管道。在这种情况下,我们只需通过services.msc
重新启动 docker 服务并切换到该登录用户。
【参考方案1】:
错误与该部分有关:
在 Windows 的默认守护进程配置中,docker 客户端必须 运行提升连接
首先,确认Docker Desktop
应用程序正在运行。如果没有,请启动它:它将运行 docker 守护进程(只需等待几分钟)。
然后,如果错误仍然存在,您可以尝试切换 Docker 守护程序类型,如下所述:
使用 Powershell:
-
以管理员身份打开 Powershell
启动命令:
& 'C:\Program Files\Docker\Docker\DockerCli.exe' -SwitchDaemon
或者,使用 cmd:
-
以管理员身份打开 cmd
启动命令:
"C:\Program Files\Docker\Docker\DockerCli.exe" -SwitchDaemon
【讨论】:
我非常喜欢 *** - 谢谢 :)! 这应该是公认的答案,因为它解决了使用 Visual Studio 在 docker 上运行解决方案的问题 它正在工作,突然 docker 停止工作,我不知道为什么?!!!!!!但执行 "C:\Program Files\Docker\Docker\DockerCli.exe" -SwitchDaemon 是让它再次运行的唯一方法。非常感谢 很棒的答案! 不适合我,得到同样的错误。【参考方案2】:我遇到了同样的问题。
启动 docker 守护进程解决了这个问题。只需按 windows 键搜索 docker 并单击“Docker Dekstop”。守护程序应该在一分钟内运行。
启动 Docker Desktop 后,确保左下角的 docker daemon 状态为绿色,当您将鼠标悬停在其上时显示 RUNNING。
【讨论】:
从 2021 年开始,谢谢。许多其他答案就像从过去的时代访问 Docker 仍处于测试阶段。 这行得通!!!!我试图从电源外壳运行 docker,但它一直说“连接期间出错:此错误可能表明 docker 守护程序没有运行。:获取”http://%2F%2F.%2Fpipe%2Fdocker_engine/v1. 24/images/json": open //./pipe/docker_engine: 系统找不到指定的文件。" 但是在我打开 docker desktop 并且 docker engine 启动后...问题已解决! :)【参考方案3】:您可以运行 "C:\Program Files\Docker\Docker\DockerCli.exe" -SwitchDaemon
并将 Docker CLI 指向 Linux 或 Windows 容器。这对我有用。
【讨论】:
这对我有用 - Win10E - Docker 版本 18.03.0-ce,构建 0520e24 (使用 linux vm - hyper v ,启用虚拟化 - 这阻止我在 virtualbox 中运行 vm - 所以我可以在某个时间点使用 docker 或 VM)【参考方案4】:错误代码:
连接时出错:获取 http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.29/version: 打开 //./pipe/docker_engine: 系统找不到指定的文件。在里面 Windows 上的默认守护程序配置,必须运行 docker 客户端 高架连接。这个错误也可能表明 docker 守护进程没有运行。
解决方案:
1) 对于 Windows 7 命令窗口(cmd.exe),以管理员身份打开 cmd.exe 并执行以下命令:
docker-machine env --shell cmd default
您将收到以下输出:
SET DOCKER_TLS_VERIFY=1
SET DOCKER_HOST=tcp://192.168.99.100:2376
SET DOCKER_CERT_PATH=C:\Users\USER_NAME\.docker\machine\machines\default
SET DOCKER_MACHINE_NAME=default
SET COMPOSE_CONVERT_WINDOWS_PATHS=true
REM Run this command to configure your 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 version
2) 对于 Windows 7 Powershell,以管理员身份打开 powershell.exe 并执行以下命令:
docker-machine env --shell=powershell | Invoke-Expression
然后执行以下命令进行控制:
docker version
3)如果重新打开cmd或powershell,需要再次重复相关步骤。
【讨论】:
请解释一下! powershell 方法是最容易遵循的。但是为什么会出现这个问题,单条班轮怎么能解决呢? 如果步骤 1 和 2 互斥,为什么它们分别编号为 1 和 2? Windows 10(企业版)怎么样?Docker machine "default" does not exist. Use "docker-machine ls" to list machines. Use "docker-machine create" to add a new one.
【参考方案5】:
如果您在左侧底部看到 docker desktop is STOPPED 或 Not Running 屏幕,请执行以下操作
-
使用 -以管理员身份运行打开 PowerShell
如果 Docker 桌面打开,请关闭它
在 PowerShell 上执行以下命令
“&
'C:\Program Files\Docker\Docker\DockerCli.exe' -SwitchDaemon”
打开 Docker 桌面,它就会启动。
我遇到了这个问题。我尝试了上述步骤,它对我有用。谢谢!
【讨论】:
【参考方案6】:我知道这个问题很久以前了,但我没有找到合适的解释和解决方案,所以希望我的回答很有用:)
假设您在 Windows 上安装 Docker Toolbox,docker
和 docker-machine
命令都将可用。通常,人们对何时使用其中任何一种感到困惑。
docker
命令仅在虚拟机中用于管理图像。在主机上使用docker-machine
命令来管理 Linux 虚拟机。
所以,请在您的 Windows 机器上使用docker-machine
命令。在 VM 中使用 docker
命令。要使用 docker
命令,例如 docker ps
,您可以打开 Docker 快速启动终端 或在 cmd/bash/PowerShell 上运行这些命令:
docker-machine run default
/假设 default 是您的 Linux 虚拟机/
docker-machine ssh default
这将启动 boot2docker,您将在命令行上看到 docker 图标。然后就可以使用docker
命令了。
祝你好运:)
【讨论】:
docker-machine: 'run' is not a docker-machine command. See 'docker-machine --help'.
这与文档所说的不符。文档说您可以运行 docker info
或 docker ps
来查看您的容器。 docs.docker.com/get-started/#test-docker-version【参考方案7】:
Docker 版本 19.03.12 和 Windows 10 遇到了同样的错误。通过以下步骤解决了它。希望对其他人有所帮助。
-
转到 Windows 开始 -> 搜索框(在此处键入搜索)。那里
输入“服务”。在列出的项目中,点击服务应用。
现在在打开的 服务 窗口中搜索“Docker 桌面服务”。右键单击它并启动该服务。其状态应更改为“Running”。
如果第 2 步出现类似“依赖服务启动失败”的错误,则启动所有依赖服务。对我来说,我必须启动一个名为“Server”的服务。
双击桌面上的“Docker Desktop”图标。现在您将在系统托盘中看到“Docker Desktop is running”。
现在从 命令提示符 或 PowerShell 运行命令“docker version”。它应该提供干净的输出。
如果步骤 5 中出现任何问题,请以管理员身份运行 命令提示符 或 PowerShell。
以上分辨率假设 Docker 已安装并且您的系统中启用了 Hyper-V / 虚拟化。
【讨论】:
【参考方案8】:1.- 打开快捷方式的位置:
2.- 右键单击和属性并将“-SwitchDaemon”添加到命运
3.- 授予管理员权限,高级选项:
4.- 重新启动窗口。
【讨论】:
【参考方案9】:尝试使用以下任一选项解决问题:
选项 A
Start-Service "Hyper-V Virtual Machine Management"
Start-Service "Hyper-V Host Compute Service"
或
选项 B
打开“窗口安全”
打开“应用和浏览器控件”
点击底部的“Exploit protection settings”
切换到“程序设置”标签
在列表中找到“C:\WINDOWS\System32\vmcompute.exe”并展开
点击“编辑”
向下滚动到“代码流保护 (CFG)”并取消选中“覆盖系统设置”
从 powershell "net start vmcompute" 启动 vmcompute
然后重启系统
【讨论】:
这不是容易受到攻击吗?【参考方案10】:我也遇到过同样的问题,可能是管理员的问题,所以按照下面的步骤来设置 docker
windows10
.
-
登录 docker 后从 docker hub 下载 docker 桌面。
Docker Desktop Installer.exe
文件将被下载。
安装Docker Desktop Installer.exe
使用Run as administrator
-> 在安装过程中标记windows容器,否则它只会安装linux容器。注销并登录后它会要求注销,它会在菜单中显示 docker 桌面。
安装后,进入 -> 计算机管理 -> 本地用户和组 -> 组 -> docker-user -> 在成员中添加用户
使用Run as administrator
运行docker桌面
检查通知选项卡中的泊坞鲸图标
运行命令>docker版本
成功使用 docker 没有任何问题。
【讨论】:
【参考方案11】:如果你在 Windows 中试试这个
docker-machine env --shell cmd default
@FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd default') DO @%i
用于测试尝试
docker run hello-world
【讨论】:
【参考方案12】:如果您在启用 Hyper-V 的 Windows 10 Pro 上安装了 docker,但仍然无法在 Windows 10 上运行 Docker,那么,如错误所示,您的 docker 守护程序未启动。
以下步骤帮助我成功启动了 docker:
在 cmd 上使用命令(管理员模式)
docker-machine restart default
然后你会收到类似这样的消息:
打开
C:\User\\User_name\\.docker\machine\machines\default\config.json
: 系统找不到指定的文件。
转到将位于 Windows 托盘(桌面右下角)上的 docker 图标
右键单击 docker 图标 > 设置 > 重置 > 重启 Docker
这需要一些时间
然后您将看到以下消息:
Docker 正在运行并带有绿色指示灯
注意:如果您的系统上已经运行了 Docker 容器,则不要执行这些步骤。您可能会丢失现有的容器。
【讨论】:
Docker machine "default" does not exist. Use "docker-machine ls" to list machines. Use "docker-machine create" to add a new one.
【参考方案13】:
原因:一个原因可能是因为我们通过命令关闭了 vmmem
wsl --shutdown
解决方案:通过右键单击简单地重新启动 Docker 即可解决问题。
【讨论】:
有什么更好的方法来关闭它吗? @deadManN 上面的命令不起作用吗? 不,它工作得很好,甚至比命令更好,作为建议的命令,你必须多次点击它......我正在寻找一种更好的方法来关闭 WSL 而不会中断它,并导致很多问题...既然您使用了一种新的方法来重新启动它,我虽然您可能也知道一种更好的方法来关闭它,而不是wsl --shutdown
【参考方案14】:
对于 Windows 11 上的我来说,将 %APPDATA%\Docker\settings.json
编辑为以下值,然后重新启动 Docker Desktop 即可解决问题(我使用的是 WSL2,而不是 Hyper-V):
【讨论】:
【参考方案15】:在 Windows 10 上安装后我遇到了同样的错误。我尝试重新启动但它不起作用,所以我做了以下操作(不推荐如果您已经在 docker 中工作了一段时间,这是全新安装):
1) 在系统托盘中找到鲸鱼,然后单击鼠标右键
2) 转到设置 > 重置
3) 恢复出厂设置
然后,我能够使用 Windows 10 遵循网站上的启动 docker 教程,现在它就像一个魅力。
【讨论】:
系统托盘中没有鲸鱼。 我的机器上运行着一个默认的 vm,它正在运行 docker worker,我重置了那个 vm,然后解决了 windows 中的 docker 错误【参考方案16】:在 powershell 或 Git bash 中打开 C 盘并运行以下命令
.\Program Files\Docker\Docker\DockerCli.exe -SwitchDaemon
【讨论】:
【参考方案17】:当我在 Windows 10 中使用 docker 启动时,同样的问题出现了。我能够成功运行 docker --version
,但在尝试运行 docker pull docker/whalesay
时失败。
我在这里的答案中尝试了很多建议,但是当我按照以下步骤操作时,我的问题得到了解决:
1.在 windows 中搜索 docker 并以管理员身份运行 docker desktop。
2.检查左下角的泊坞窗符号,如果泊坞窗正在运行,它应该是绿色的。
3.如果它没有运行,请先安装“wsl_update”。
4.打开 docker 桌面并使用您的 docker 凭据登录,登录后您可以看到服务器正在重新启动,并且左下角的徽标变为绿色。
5、查看docker是否在运行,以管理员身份打开PowerShell,运行docker run hello-world
。
【讨论】:
第 3 步解决了我的问题【参考方案18】:我最近遇到了同样的问题。问题是安全软件(Trendmicro)阻止 docker 创建 Hyperv 网络接口。您还应该检查防火墙、防病毒软件是否阻止安装或配置。
【讨论】:
【参考方案19】:对我来说,通过停止在 Hyper-V 中运行的虚拟 Ubuntu 实例解决了该错误:
The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.
一旦 Ubuntu 实例停止并重新启动 Docker Desktop,我常用的 docker 命令就可以正常运行。
PS:我有尝试这个的想法,因为 Docker Desktop 已帮助编译并提供作为用户反馈发送到 Docker Hub 的错误日志...该日志似乎表明 我的机器出现故障RAM,而 Docker 失败的原因很简单。杀死 Ubuntu 实例解决了这个问题。
【讨论】:
【参考方案20】:如果其他答案都不适合你,试试这个: 打开终端并运行:
wsl -l -v
如果您发现 docker-desktop 处于“正在安装”状态,请关闭 Docker,以管理员身份运行 powershell 并取消注册 docker-desktop:
PS C:\WINDOWS\system32> .\wslconfig.exe /u docker-desktop
重新启动 docker,希望它能正常工作。如果没有,请先尝试卸载 docker,然后注销 docker-desktop,然后重新安装 Docker。
来源:https://github.com/docker/for-win/issues/7295#issuecomment-645989416
【讨论】:
【参考方案21】:在我的情况下,WSL2 Linux-Kernel 丢失,下载、执行并重新启动:
https://docs.microsoft.com/de-de/windows/wsl/wsl2-kernel
解决了这个问题。
【讨论】:
【参考方案22】:我的解决方案非常简单。我注意到 docker 运行的是 linux 容器而不是 windows 容器。我所做的是通过右键单击系统托盘中的泊坞窗图标并选择切换到 Windows 容器来切换到 Windows 容器。
【讨论】:
【参考方案23】:将 docker 桌面安装到您的电脑(Windows 系统)后。你可以找到这个位置。实际上是什么,?它通过您的 CLI 启动 Docker 守护进程
"C:\Program Files\Docker\Docker\DockerCli.exe" -SwitchDaemon
【讨论】:
请提供更详细的答案,否则可能会被标记为低质量。 将 docker 桌面安装到您的电脑(Windows 1)之后。你可以找到这个位置。实际上是什么,?它通过你的 CLI 启动 Docker 守护进程 我根据您的评论编辑了您的答案以添加详细信息。您也可以自己编辑答案。还有一个article about writing answers that get upvote,很整洁。【参考方案24】:这在 win10-home https://github.com/docker/for-win/issues/11967 上对我有用
-
关闭您的服务泊坞窗
现在在窗口命令终端中执行这个
RMDIR /S %USERPROFILE%\AppData\Roaming\Docker
启动您的服务泊坞窗
现在点击您的“Docker 桌面”
“Docker 桌面”现在将运行……完成……:)
【讨论】:
我也在使用 Win 10 家庭版(安装了 WSL 2)。我得到:【参考方案25】:对我来说,问题是没有启用虚拟化。
在 Windows 10 上:转到任务管理器 -> 性能 -> CPU,您应该会看到“虚拟化:已启用”部分
如果您没有看到此选项,则表示尚未启用虚拟化。
需要注意的另一件有趣的事情是您必须启用 Hyper V。但是,当我使用并行桌面时,我必须启用“嵌套虚拟化”才能“真正启用”Hyper V。因此,如果您的 Windows 是虚拟机,请检查启用嵌套虚拟化的 Parallels(或您正在使用的任何设备)的设置。
【讨论】:
【参考方案26】:我正在使用带有 Docker Toolbox 的 Windows 7 并修复它只是打开 Docker 快速入门终端。
$ docker version 客户端:版本:17.05.0-ce API 版本:1.29 Go 版本:go1.7.5 Git 提交:89658be 构建:5 月 5 日星期五 2017 年 15:36:11 操作系统/Arch:windows/amd64
服务器:版本:17.05.0-ce API 版本:1.29(最低版本 1.12) Go 版本:go1.7.5 Git 提交:89658be 构建:2017 年 5 月 4 日星期四 21:43:09 操作系统/Arch:linux/amd64 实验:false
【讨论】:
【参考方案27】:我的一个朋友遇到了类似的问题,我们试过了,它成功了。
Hyper-V 尽管在“打开或关闭 Windows 功能”下列为处于活动状态,但实际上并未处于活动状态。在 PowerShell 下运行 systeminfo 并看到 要求被列为满足(这不是您期望 Hyper-V 实际运行的输出)。步骤:
-
打开“打开或关闭 Windows 功能”
如果您不确定如何执行此操作,请参阅
https://www.howtogeek.com/250228/what-windows-10s-optional-features-do-and-how-to-[turn-them-on-or-off/][1]
关闭 Hyper-V(取消选中复选框,确保所有子组件都标记为关闭)
点击“确定” - 您的机器将重新启动。
当您的计算机再次启动时,打开“打开或关闭 Windows 功能”并重新打开 Hyper-V。您的机器将再次重启。
现在您可以通过运行 docker hello-world image 进行测试。
【讨论】:
【参考方案28】:在 Windows 10 机器上安装: 在安装搜索 Windows Features 之前在搜索中检查并检查 windows hypervisor platform 和 Subsystem for Linux
安装 WSL 1 或 2 是强制性的,因此请在 docker 提示您安装时安装它。
https://docs.microsoft.com/en-us/windows/wsl/install-win10
您需要从 windows 商店安装 ubantu(版本 16,18 或 20):
ubantu version 20
安装后你可以运行docker -version
这样的命令
或docker run hello-world
在 Linux 终端中。
此视频将有助于: https://www.youtube.com/watch?v=5RQbdMn04Oc&t=471s
【讨论】:
【参考方案29】:确保您启用了 Hyper-V,这就是我的问题。
【讨论】:
【参考方案30】:对于win10,我遇到了同样的问题:
error during connect: Post http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.39/images/load?quiet=0: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.
docker 服务似乎可以正常工作。重新启动没有帮助。 以管理员身份从安装目录运行二进制文件。
就我而言:
run as administrator -> C:\Program Files\Docker\Docker\Docker for Windows.exe
【讨论】:
这解决了我的问题。使用 windows 容器运行 docker windows CE。谢谢!'"C:\Program Files\Docker\Docker\Docker for Windows.exe"' is not recognized as an internal or external command, operable program or batch file.
以上是关于Docker 无法在 Windows 上启动的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 上安装 Docker 后无法启动我的虚拟 Box 机
在win10 docker启动的centos容器中安装nginx