情景:最近一直在搞微服务,团队的服务器是阿里云的 Windows Server 2022,之前部署的是单体应用,单体后端+单体前端的 CI/CD 倒也不痛不痒。但上了微服务之后,一下子就变得麻烦起来,哪怕手动部署也嫌得麻烦。决定还是在服务器上装一下Docker。
不确定Windows Server能不能直接装,最初就先按自己电脑装 Docker Desktop 的路子试了试,能装上,但是 Docker Engine 运行存在问题,Docker Desktop 打开时一直在初始化,估计是Windows Server 不支持 hype-v 的关系,尝试安装 WSL2 也装不上,看来这路子走不通。
换个方法,Windows Server 本身支持 Docker EE,那就直接安装 Docker Enterprise 吧。在这之前,切记把安装过的 Docker Desktop 卸载干净,不卸载的话至少也要把 C:\User\sysetem32 下面的 docker.exe 和 dockerd.exe 删掉,不然会影响 Docker EE 的运行与配置:
在 powershell 中执行以下命令:
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
问问题时,可以直接回车,默认是yes
在 powershell 中执行以下命令:
Install-Package -Name docker -ProviderName DockerMsftProvider
问问题时,输入y,因为默认是no
Restart-Computer -Force # 手动重启也行
设置环境变量:Path -> 添加:
C:\Program Files\Docker
C:\ProgramData\Docker\config\daemon.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
}
在 powershell 中执行以下命令:
Start-Service Docker
到这里,就可以正常使用Docker了,来句 docker run hello-world
跑个Helle World试试成效:
Windows容器文档:https://learn.microsoft.com/zh-cn/virtualization/windowscontainers/(官方手册仅供参考)