一、情景
最近團(tuán)隊(duì)在進(jìn)行微服務(wù)架構(gòu)的轉(zhuǎn)型,服務(wù)器是阿里云的 Windows Server 2022。過去我們一直使用單體應(yīng)用架構(gòu),無論是單體后端還是單體前端,CI/CD 的流程雖然不算完美,但也還能接受。然而,當(dāng)轉(zhuǎn)向微服務(wù)架構(gòu)后,手動(dòng)部署變得異常繁瑣,效率低下。于是,我們決定在服務(wù)器上安裝 Docker 來簡化部署流程。
二、嘗試
最初,我們嘗試按照在本地電腦安裝 Docker Desktop 的方法來安裝,雖然能夠安裝成功,但 Docker Engine 無法正常運(yùn)行,Docker Desktop 一直處于初始化狀態(tài)。我們猜測這可能是因?yàn)?nbsp;Windows Server 不支持 Hyper-V 的緣故。嘗試安裝 WSL2 也失敗了,看來這條路行不通。
三、正解
經(jīng)過研究,我們發(fā)現(xiàn) Windows Server 本身支持 Docker Enterprise Edition(Docker EE)。于是,我們決定直接安裝 Docker EE。在安裝之前,務(wù)必將之前安裝的 Docker Desktop 徹底卸載干凈,或者至少刪除 C:\Windows\System32 目錄下的 docker.exe 和 dockerd.exe 文件,否則會影響 Docker EE 的運(yùn)行和配置。
安裝 Docker 管理工具
在 PowerShell 中運(yùn)行以下命令來安裝 Docker 管理工具模塊:
powershell
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
如果提示確認(rèn),直接回車即可,默認(rèn)選擇“是”。
安裝 Docker
在 PowerShell 中運(yùn)行以下命令來安裝 Docker:
powershell
Install-Package -Name docker -ProviderName DockerMsftProvider
如果提示確認(rèn),請輸入 y,因?yàn)槟J(rèn)選項(xiàng)是“否”。
重啟系統(tǒng)
執(zhí)行以下命令重啟系統(tǒng):
powershell
Restart-Computer -Force
也可以手動(dòng)重啟服務(wù)器。
配置 Docker 系統(tǒng)路徑
將 C:\Program Files\Docker 添加到系統(tǒng)的環(huán)境變量 Path 中。
配置 Docker 引擎(可選)
如果需要自定義 Docker 配置,可以編輯 C:\ProgramData\Docker\config\daemon.json 文件。如果該文件不存在,可以手動(dòng)創(chuàng)建。以下是一個(gè)示例配置:
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
}
啟動(dòng) Docker 服務(wù)
在 PowerShell 中運(yùn)行以下命令啟動(dòng) Docker 服務(wù):
powershell
Start-Service Docker
驗(yàn)證 Docker 安裝
運(yùn)行以下命令來驗(yàn)證 Docker 是否安裝成功:
powershell
docker run hello-world
如果看到“Hello from Docker!”的輸出,說明 Docker 已經(jīng)成功安裝并運(yùn)行。