【献给小白用户】
首先参考官网文档:
windows server2016 需要用PowerShell来安装Docker,那么PowerShell是什么,在哪里打开?首先PowerShell不是命令提示符,也不是命令提示符(管理员)。
1、打开PowerShell(windows server2016默认是已安装的,如果没有,请从服务器管理员中进行安装)
介绍两种打开方法:
a、打开PowerShell最简单的方法是,在开始菜单里找到并打开它(最好是以管理员的身份运行),如:
b、打开命令提示符,输入PowerShell,打开,或者运行里输入PowerShell命令。
2、安装Docker
a、从 PowerShell 库安装 Docker-Microsoft PackageManagement 提供程序。
运行命令,安装DockerMsftProvider
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
这一步,可能会提示你安装NuGet,那么请按"y",选择安装。
此处可能会遇到的坑一:
执行Install-Module -Name DockerMsftProvider -Repository PSGallery -Force 命令时,提示你安装NuGet provider,选择“y”以后,又告知https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409 找不到安装包,如下图:
需要使用 NuGet 提供程序来继续操作 PowerShellGet 需要使用 NuGet 提供程序"2.8.5.201"或更高版本来与基于 NuGet 的存储库交互。必须在"C:\Program Files\PackageManagement\ProviderAssemblies"或"C:\Users\Fan Dean\AppData\Local\PackageManagement\ProviderAssemblies"中提供 NuGet 提供程序。也可以通过运行 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force' 安装 NuGet 提供程序。是否要让 PowerShellGet 立即安装并导入 NuGet 提供程序? [Y] 是(Y) [N] 否(N) [S] 暂停(S) [?] 帮助 (默认值为"Y"): 警告: 无法下载可用提供程序列表。请检查 Internet 连接。 PackageManagement\Install-PackageProvider : 找不到提供程序"NuGet"的指定搜索条件的匹配项。程序包提供程序要求 "Pac kageManagement" 和 "Provider" 标记。请检查指定的程序包是否具有标记。 所在位置 C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7468 字符: 21 ...
对于此问题,主要是由于TLS引起的,需要运行一条命令:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
参考文档:https://jaapwesselius.com/2020/04/08/install-module-msonline-fails-with-unable-to-download-from-uri/
然后,再次安装NuGet provider就可以了。
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
此坑的总体解决方式如下:
PS C:\Users\Administrator> [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 PS C:\Users\Administrator> Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force Name Version Source Summary ---- ------- ------ ------- nuget 2.8.5.208 https://onege... NuGet provider for the OneGet meta-package manager PS C:\Users\Administrator> Install-Module posh-ssh
此处可能会遇到的坑二:
安装了NuGet provider后,重新执行命令 Install-Module -Name DockerMsftProvider -Repository PSGallery -Force,会发现还是安装不了,如下图:
这是当前选择的仓库不能使用,即 -Repository PSGallery 参数。
我的解决方式是,不使用此参数,直接执行:Install-Module -Name DockerMsftProvider -Force
Install-Module -Name DockerMsftProvider -Force
b、使用 PackageManagement PowerShell 模块安装最新版本的 Docker。
Install-Package -Name docker -ProviderName DockerMsftProvider -Force
PowerShell 询问是否信任包源“DockerDefault”时,键入 A
以继续进行安装。
第二步可能遇到的坑:找不到路径(此坑有参考别的网站)
这是什么鬼,怎么会出错啊!静下心来看看错误Install-Package : 找不到路径“C:\Users\ADMINI~1\AppData\Local\Temp\DockerMsftProvider\Docker-1-12-2-cs2-ws-beta.zip”,
那我们就打开这个地址去看看结果发现:
打开这个json 文件我们打开看看
看到这个我明白了,原来是没有下载下来这个包那么我们手动下载吧,
https://dockermsft.blob.core.windows.net/dockercontainer/docker-1-12-2-cs2-ws-beta.zip
"url": "https://dockermsft.blob.core.windows.net/dockercontainer/docker-17-06-2-ee-13.zip", 直接下载到本地。
然后我们把包放到C:\Users\ADMINI~1\AppData\Local\Temp\DockerMsftProvider目录下然后,再运行以下命令
Find-Package –roviderName DockerMsftProvider | Install-Package -Verbose
看到提示后我们在输入A 然后回车即可。到此这个坑已填。
接下来总结一下,第二步的坑:提示"docker xx"文件不存在,操作方法如下:
①、先需要记住这个文件名,然后到这个地址去下载:https://dockermsft.blob.core.windows.net/dockercontainer。
比如提示" docker-17-03-1-ee.zip"不存在,则访问 https://dockermsft.blob.core.windows.net/dockercontainer/docker-17-03-1-ee.zip进行下载。
②、下载完成之后(可以再执行一次命令:Install-Package -Name docker -ProviderName DockerMsftProvider,注意是在执行后,复制文件到这个目录,如果在执行前复制,程序会先删除然后再处理的),
打开目录" C:\Users\Administrator\AppData\Local\Temp\2\DockerMsftProvider",将docker-17-03-1-ee.zip复制到此目录下,此时你应该看到该目录有个xx.tmp的临时文件。
③、执行一下命令:Find-Package –roviderName DockerMsftProvider | Install-Package -Verbose
c、在安装完成后,请重启计算机。
Restart-Computer -Force
d、开启Docker服务
Start-Service Docker
安装完成,主要的坑都在第一步。