windows server2019安装docker
windows server2019安装docker
安装
在Windows Server 2019上安装Docker的步骤如下:
1. 系统要求
确保你的Windows Server 2019版本支持容器功能。建议更新系统到最新的修补程序和服务包。
2. 启用容器功能
- 打开PowerShell,以管理员身份运行以下命令启用容器和Hyper-V功能:
powershell
复制代码
Install-WindowsFeature -Name containers -IncludeAllSubFeature
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart
- 系统会提示重启服务器,重启后继续下一步。
3. 安装Docker
- 下载Docker安装脚本:
- 打开PowerShell,以管理员身份运行以下命令下载并安装Docker:
powershell
复制代码
Invoke-WebRequest -Uri https://download.docker.com/components/engine/windows-server/20H2/docker-20.10.6.zip -OutFile docker-20.10.6.zip
Expand-Archive docker-20.10.6.zip -DestinationPath $Env:ProgramFiles
- 将Docker目录添加到系统路径中:
powershell
复制代码
$env:Path += ";C:\Program Files\Docker"
[Environment]::SetEnvironmentVariable("Path", $env:Path, [EnvironmentVariableTarget]::Machine)
- 安装并启动Docker服务:
powershell
复制代码
dockerd --register-service
Start-Service docker
4. 验证Docker安装
- 检查Docker版本,确保安装成功:
powershell
复制代码
docker version
- 运行测试容器,确保Docker正常工作:
powershell
复制代码
docker run hello-world
5. 设置Docker为开机自启动(可选)
- 设置Docker服务为开机自启动:
powershell
复制代码
Set-Service -Name docker -StartupType Automatic
常见问题及解决方法
- 权限问题:确保使用管理员权限运行PowerShell。
- 网络问题:确保服务器可以访问外部网络以下载Docker和容器镜像。
问题1
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/Windows-Containers/Main/helpful\_tools/Install-DockerCE/install-docker-ce.ps1" -o install-docker-ce.ps1 .\\install-docker-ce.ps1
可以使用Microsoft提供的脚本来安装Docker CE。这是一个简化的安装方法。以下是详细步骤:
1. 下载并运行安装脚本
- 打开PowerShell,以管理员身份运行以下命令以下载安装脚本:
powershell
复制代码
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/Windows-Containers/Main/helpful_tools/Install-DockerCE/install-docker-ce.ps1" -OutFile install-docker-ce.ps1
- 运行安装脚本:
powershell
复制代码
.\install-docker-ce.ps1
2. 运行安装脚本后验证安装
- 验证Docker是否成功安装:
powershell
复制代码
docker version
- 运行一个简单的容器以确认Docker功能正常:
powershell
复制代码
docker run hello-world
常见问题及解决方法
- 脚本执行策略:
- 如果遇到脚本执行策略限制的问题,可以临时允许脚本运行:
powershell
复制代码
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
- 网络问题:
- 确保你的服务器可以访问互联网,以便下载Docker和所需的组件。
- 服务启动失败:
- 如果Docker服务未能启动,可以尝试手动启动服务并查看日志:
powershell
复制代码
Start-Service docker
Get-EventLog -LogName Application -Source Docker
问题2
PS C:\\Windows\\system32> Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/Windows-Containe rs/Main/helpful\_tools/Install-DockerCE/install-docker-ce.ps1" -o install-docker-ce.ps1 PS C:\\Windows\\system32> .\\install-docker-ce.ps1 Querying status of Windows feature: Containers... Enabling feature Containers... 警告: 必须重新启动此服务器才能完成安装过程。 Restart is required; restarting now... Creating scheduled task action (C:\\Windows\\system32\\install-docker-ce.ps1 )... Creating scheduled task trigger... Registering script to re-run at next user logon... Restart-Computer : 无法重新启动计算机 WIN-IGD6VS6HTO6,并显示以下错误消息: 无法启动系统关机,因为有其他用户登录到计算机 。。 所在位置 C:\\Windows\\system32\\install-docker-ce.ps1:167 字符: 13 + Restart-Computer + \~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~ + CategoryInfo : OperationStopped: (WIN-IGD6VS6HTO6:String) \[Restart-Computer\], InvalidOperationException + FullyQualifiedErrorId : RestartcomputerFailed,Microsoft.PowerShell.Commands.RestartComputerCommand
由于脚本需要重启计算机并在重启后继续执行,但当前计算机上有其他用户登录,导致无法自动重启。你可以手动重启计算机,然后再次运行安装脚本。以下是详细步骤:
1. 手动重启计算机
- 先保存好当前工作,然后手动重启计算机。
2. 重启后重新运行脚本
- 重启后,重新以管理员身份打开PowerShell,然后再次运行安装脚本:
powershell
复制代码
.\install-docker-ce.ps1
3. 验证Docker安装
- 验证Docker是否成功安装:
powershell
复制代码
docker version
- 运行一个简单的容器以确认Docker功能正常:
powershell
复制代码
docker run hello-world
问题3
PS C:\\Windows\\system32> .\\install-docker-ce.ps1 Querying status of Windows feature: Containers... Feature Containers is already enabled. DOCKER default Checking Docker versions C:\\Windows\\system32\\install-docker-ce.ps1 : 无法连接到远程服务器 所在位置 行:1 字符: 1 + .\\install-docker-ce.ps1 + \~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~ + CategoryInfo : NotSpecified: (:) \[Write-Error\], WriteErrorException + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,install-docker-ce.ps1
看起来脚本在检查Docker版本时无法连接到远程服务器。这可能是由于网络连接问题、DNS问题或防火墙阻止访问Docker下载服务器导致的。你可以尝试以下几种解决方法:
方法一:检查网络连接
- 检查互联网连接:
- 确保你的服务器可以访问互联网。尝试在PowerShell中运行以下命令,确认可以访问外部网站:
powershell
复制代码
Invoke-WebRequest -UseBasicParsing "https://www.google.com"
- 检查DNS解析:
- 确保DNS解析正常。尝试在PowerShell中运行以下命令,确认DNS解析正常:
powershell
复制代码
nslookup www.google.com
方法二:手动下载Docker
- 手动下载Docker二进制文件:
- 如果无法通过脚本自动下载Docker,可以手动下载Docker二进制文件。
- 访问Docker官网下载最新的Docker二进制文件。
- 解压并配置Docker:
- 将下载的压缩包解压到适当的位置,例如
C:\Program Files\Docker
。
- 将下载的压缩包解压到适当的位置,例如
- 配置环境变量:
- 将Docker目录添加到系统路径中:
powershell
复制代码
$env:Path += ";C:\Program Files\Docker"
[Environment]::SetEnvironmentVariable("Path", $env:Path, [EnvironmentVariableTarget]::Machine)
- 安装并启动Docker服务:
powershell
复制代码
dockerd --register-service
Start-Service docker
方法三:使用离线安装包
- 下载离线安装包:
- 从Docker官网或其他可信来源下载Docker的离线安装包。
- 安装Docker:
- 根据下载的离线安装包中的说明进行安装。
方法四:检查防火墙和代理设置
- 检查防火墙设置:
- 确保防火墙没有阻止PowerShell或HTTP流量。
- 检查代理设置:
- 如果你的网络使用代理,请确保在PowerShell中配置代理设置:
powershell
复制代码
[system.net.webrequest]::defaultwebproxy = New-Object system.net.webproxy('http://问题r-proxy-url:port')
[system.net.webrequest]::defaultwebproxy.credentials = [System.Net.CredentialCache]::DefaultCredentials