尝试在 Windows Server 2019 及以下版本上以进程隔离方式安装 Docker这些步骤。 (我无法在此服务器上使用 Hyper-V)在管理模式下运行 PowerShell 时。
然而我得到了错误
Get-PackageProvider : A parameter cannot be found that matches parameter name 'ListAvailableget-packagesource'
![enter image description here](https://i.stack.imgur.com/SL5qx.png)
我也尝试过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
UPDATE 1
我必须设置 PowerShell执行政策像这样不受限制(我将其设置回受限制Set-ExecutionPolicy -ExecutionPolicy Restricted
毕竟这):
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
我还不得不暂时禁用一些防病毒软件/恶意软件防护来自 Windows Defender。对我来说,反恶意软件已经被禁用,所以我还必须禁用实时病毒防护。
然后我就可以跑了
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
Now via 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
I ran 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 得到任何反馈,也没有错误,所以我认为这很好。
然而,当我在这里检查然后跑了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
多变的。
![enter image description here](https://i.stack.imgur.com/wik69.png)
我仍然遇到同样的错误
术语“docker”不被识别为 cmdlet、函数、脚本文件或可操作程序的名称。
UPDATE 2
根据@Peter Wishart的回答,我检查了我的PATH
系统变量,但可以在那里看到 Docker(见下面的屏幕截图)并且正如 Peter 也提到的,因为我可以运行docker --version
通过命令提示符(不是 PowerShell)安装成功完成。
![enter image description here](https://i.stack.imgur.com/0LHb1.png)
UPDATE 3
I checked ($env:path).Split(";")
in PowerShell and the Docker path is there:
![enter image description here](https://i.stack.imgur.com/0TngU.png)
如何安装 Docker?