我还尝试过Get-PackageProvider:找不到与参数名称 'ListAvailableget-packagesource' 匹配的参数。
Install-Package -Name docker -ProviderName DockerMsftProvider
,然后出现以下错误:Install-Package : Unable to find package providers (DockerMsftProvider).
At line:1 char:1
+ Install-Package -Name docker -ProviderName DockerMsftProvider
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (Microsoft.Power....InstallPackage:InstallPackage) [Install-Package], E
xception
+ FullyQualifiedErrorId : UnknownProviders,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackage
Install-Package : Unable to find package providers (DockerMsftProvider).
At line:3 char:1
+ Install-Package -Name docker -ProviderName DockerMsftProvider
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (Microsoft.Power....InstallPackage:InstallPackage) [Install-Package], E
xception
+ FullyQualifiedErrorId : UnknownProviders,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackage
更新1
我必须将PowerShell 执行策略 设置为无限制,如下所示(完成后我将把它重新设置为受限 Set-ExecutionPolicy -ExecutionPolicy Restricted
):
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
我还必须暂时禁用Windows Defender中的一些防病毒/恶意软件保护。对我来说,反恶意软件已经被禁用了,所以我还必须禁用实时病毒保护。
然后我可以运行
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
现在通过 Get-PackageProvider -ListAvailable
我可以看到已安装了 DockerMsftProvider
。
Name Version DynamicOptions
---- ------- --------------
DockerMsftProvider 1.0.0.8 Update
msi 3.0.0.0 AdditionalArguments
msu 3.0.0.0
NuGet 2.8.5.208 Destination, ExcludeVersion, Scope, SkipDependencies, Headers, FilterOnTag...
PowerShellGet 1.0.0.1 PackageManagementProvider, Type, Scope, AllowClobber, SkipPublisherCheck, ...
Programs 3.0.0.0 IncludeWindowsInstaller, IncludeSystemComponent
我运行了Install-Package -Name docker -ProviderName DockerMsftProvider
,并输入了Y
。
然后我运行Get-Package -Name Docker -ProviderName DockerMsftProvider
,得到:
Name Version Source ProviderName
---- ------- ------ ------------
docker 20.10.0 DockerDefault DockerMsftProvider
当我运行
Install-Package -Name docker -ProviderName DockerMsftProvider
时,PowerShell没有任何反馈,也没有错误,所以我认为它很好。然而,当我checked here并运行
docker run --isolation=process mcr.microsoft.com/windows/nanoserver:1809 cmd.exe /c ping 127.0.0.1 -t
时,我收到了错误提示。
docker : The term 'docker' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ docker run --isolation=process mcr.microsoft.com/windows/nanoserver:1 ...
+ ~~~~~~
+ CategoryInfo : ObjectNotFound: (docker:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
过去我曾尝试安装 Docker Desktop,但由于我的 VPS 不支持 Hyper-V,因此我将其卸载。我不确定这是否仍然与那次安装有关,但我将路径 C:\Program Files\Docker
添加到环境变量的 PATH
中。
我仍然遇到相同的错误
“docker”一词不被识别为命令、函数、脚本文件或可操作程序的名称。
更新2
根据@Peter Wishart的答案,我检查了我的PATH
系统变量,但是Docker可以在那里看到(如下面的屏幕截图所示),正如Peter所提到的那样,由于我可以通过命令提示符(而不是PowerShell)运行docker --version
,因此安装已成功完成。
更新3
我在PowerShell中检查了($env:path).Split(";")
,Docker路径就在那里:
我该如何安装Docker?
($env:path).Split(";")
,我只能看到路径引用到"Docker"的唯一路径是"C:\Program Files\Docker"。我使用cmd
,导航到文件夹 "C:\Program Files\Docker" 并运行docker --version
,我看到"Docker版本20.10.0,构建6ee42dc"。我不确定是否仍然需要尝试您的脚本,因为环境似乎已正确设置?如果不是,还有什么其他方法我可以尝试吗? - Adamdocker --version
表示 docker 已经安装好了。 我可以通过运行$env:path=":C:\Program Files\Docker"
然后尝试运行 docker(注意:开头有无效字符)来重现您遇到的错误。 如果我然后运行$env:path="C:\Program Files\Docker"
,PowerShell 可以找到 docker,所以我认为问题出在路径变量上。 - Peter Wishart$env:path
设置,我认为这应该显示出问题所在是PowerShell中的“有效路径”。 - Peter Wishart