安装Docker Windows Server 2019:术语';码头工人';无法识别为cmdlet、函数、脚本文件或可操作程序的名称
正在尝试在Windows Server 2019及以下版本上以进程隔离方式安装Docker。(我无法在此服务器上使用Hyper-V)在管理模式下运行PowerShell时 然而,我得到了错误安装Docker Windows Server 2019:术语';码头工人';无法识别为cmdlet、函数、脚本文件或可操作程序的名称,docker,windows-server-2019,Docker,Windows Server 2019,正在尝试在Windows Server 2019及以下版本上以进程隔离方式安装Docker。(我无法在此服务器上使用Hyper-V)在管理模式下运行PowerShell时 然而,我得到了错误 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
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
Get-PackageProvider:找不到与参数名称“ListAvailableget-packagesource”匹配的参数
我还尝试了Install Package-Name docker-ProviderName dockermstftprovider
然后我得到:
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的一些防病毒/防病毒软件。对我来说,反恶意软件已经被禁用,所以我还必须禁用实时病毒保护
然后我就可以跑了
安装模块-名称dockermstfprovider-存储库PSGallery-Force
现在通过getpackageprovider-listavable
我看到dockermstftprovider
已安装
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 dockermstftprovider
并输入了Y
然后运行Get Package-Name Docker-ProviderName dockermstftprovider
并获取:
Name Version Source ProviderName
---- ------- ------ ------------
docker 20.10.0 DockerDefault DockerMsftProvider
当我运行Install Package-Name docker-ProviderName dockermstftprovider
时,我没有通过PowerShell获得任何反馈,也没有错误,所以我认为这很好
但是,当我和docker运行时--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,因此我将其卸载。
我不确定这是来自那个安装还是新安装,但我将pathC:\Program Files\Docker
添加到了我的环境path
变量中
我还是犯了同样的错误
术语“docker”不能识别为cmdlet、函数、脚本文件或可操作程序的名称
更新2
根据@Peter Wishart的回答,我检查了我的路径
系统变量,但是Docker可以在那里看到(见下面的屏幕截图),正如Peter也提到的,因为我可以通过命令提示符(不是PowerShell)运行Docker--version
,所以安装成功完成
更新3我在PowerShell中选中了
($env:path).Split(;”)
,Docker路径在那里:
如何安装Docker?我使用脚本安装容器功能并卸载Windows Defender(注意,这对您的环境可能安全,也可能不安全): 我提到这一点的情况下,它的一个选择,只是重置机器,如果没有其他工作 我认为您的第一个问题是
Get PackageProvider
步骤中的复制/粘贴错误
您列出的文件是最新DockerEE版本的正确文件
如果直接从那里运行docker,例如和“C:\Program Files\docker\docker.exe”-version
但不起作用,则存在路径以外的环境问题-请尝试重新安装docker
如果重新启动Powershell并运行($env:path).Split(“;”
),则唯一的Docker条目应该是C:\Program Files\Docker
-也许Docker Desktop中有一些剩余内容
[编辑]
系统路径似乎以一种微妙的方式被破坏(尽管docker路径存在且正确)
我认为,如果您仔细检查路径配置和/或将docker路径移到更靠近路径起点的位置,您应该能够得到永久修复。谢谢!我测试了环境设置:如果我运行
($env:path).Split(;”)
我会看到“C:\Program Files\Docker”是Docker的唯一路径引用。我使用了cmd
,导航到文件夹“C:\Program Files\Docker”并运行Docker--version
我看到了“Docker版本20.10.0,构建6ee42dc”。我不确定是否仍然需要尝试您的脚本,因为环境似乎设置正确?如果没有,我还可以尝试什么?该脚本在新服务器2019实例上对我有效。看到正确的docker--version
表示docker安装正常。我可以通过运行$env:path=“:C:\Program Files\Docker”
然后尝试运行Docker(注意:开始时字符无效)来重现您得到的错误。如果然后运行$env:path=“C:\Program Files\Docker”
,Powershell可以找到Docker,因此我认为问题出在path变量上。啊,好的,所以我不需要尝试该脚本,因为安装已成功完成。请参阅我的更新2,其中我仔细检查了path变量。如果您尝试了我上面建议的$env:path
设置,则不清楚,我认为这应该表明问题出在powershell中的“有效路径”。我添加了更新3以获得powershell中的路径(根据您的建议),这似乎是正常的。我看不出你在回答中为PowerShell设置了什么路径?