一、情景
最近团队在进行微服务架构的转型,服务器是阿里云的 Windows Server 2022。过去我们一直使用单体应用架构,无论是单体后端还是单体前端,CI/CD 的流程虽然不算完美,但也还能接受。然而,当转向微服务架构后,手动部署变得异常繁琐,效率低下。于是,我们决定在服务器上安装 Docker 来简化部署流程。
二、尝试
最初,我们尝试按照在本地电脑安装 Docker Desktop 的方法来安装,虽然能够安装成功,但 Docker Engine 无法正常运行,Docker Desktop 一直处于初始化状态。我们猜测这可能是因为 Windows Server 不支持 Hyper-V 的缘故。尝试安装 WSL2 也失败了,看来这条路行不通。
三、正解
经过研究,我们发现 Windows Server 本身支持 Docker Enterprise Edition(Docker EE)。于是,我们决定直接安装 Docker EE。在安装之前,务必将之前安装的 Docker Desktop 彻底卸载干净,或者至少删除 C:\Windows\System32 目录下的 docker.exe 和 dockerd.exe 文件,否则会影响 Docker EE 的运行和配置。
安装 Docker 管理工具
在 PowerShell 中运行以下命令来安装 Docker 管理工具模块:
powershell
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
如果提示确认,直接回车即可,默认选择“是”。
安装 Docker
在 PowerShell 中运行以下命令来安装 Docker:
powershell
Install-Package -Name docker -ProviderName DockerMsftProvider
如果提示确认,请输入 y,因为默认选项是“否”。
重启系统
执行以下命令重启系统:
powershell
Restart-Computer -Force
也可以手动重启服务器。
配置 Docker 系统路径
将 C:\Program Files\Docker 添加到系统的环境变量 Path 中。
配置 Docker 引擎(可选)
如果需要自定义 Docker 配置,可以编辑 C:\ProgramData\Docker\config\daemon.json 文件。如果该文件不存在,可以手动创建。以下是一个示例配置:
JSON
{
"authorization-plugins": [],
"dns": [],
"dns-opts": [],
"dns-search": [],
"exec-opts": [],
"storage-driver": "",
"storage-opts": [],
"labels": [],
"log-driver": "",
"mtu": 0,
"pidfile": "",
"data-root": "",
"cluster-store": "",
"cluster-advertise": "",
"debug": true,
"hosts": ["tcp://0.0.0.0:2375"],
"log-level": "",
"tlsverify": true,
"tlscacert": "",
"tlscert": "",
"tlskey": "",
"group": "",
"default-ulimits": {},
"bridge": "",
"fixed-cidr": "",
"raw-logs": false,
"registry-mirrors": [],
"insecure-registries": [],
"disable-legacy-registry": false
}
启动 Docker 服务
在 PowerShell 中运行以下命令启动 Docker 服务:
powershell
Start-Service Docker
验证 Docker 安装
运行以下命令来验证 Docker 是否安装成功:
powershell
docker run hello-world
如果看到“Hello from Docker!”的输出,说明 Docker 已经成功安装并运行。