新购买阿里云Windows Server 2019一台,考虑公司主流还是Windows,所以打算在Windows上使用docker部署部分服务。但在使用过程中,发现这个阿里云服务器跟物理机服务器还是略有区别的。
有一个项目的合作方提供了物理机服务器,安装了Windows Server 2019。为了简化部署,直接安装docker desktop 4.2版并且部署了公司的软件系统,在使用过程中运行正常。
- 尝试一、按照物理机的操作步骤,直接下载了docker desktop 4.2版,安装时提示17763版本无法兼容desktop 3.6.0及以上,忽略提示、最后安装成功,但启动时提示:Unhandled exception.
- 尝试二、按安装提示检查,阿里云的Windows Server 2019的内部版本确为17763。下载了docker desktop 3.5.2,重新安装成功。启动时仍然提示:Unhandled exception!试了几次,放弃了!
考虑到阿里云服务器本身也是虚拟机,是不是服务器内部就不再支持docker虚拟化了?一方面觉得可以理解,因为你不可能在vmware的windows虚拟机中再安装docker,因为docker实际上依赖hyper-v,而虚拟机已经不支持进一步虚拟化了!但另一方面又觉得,要是阿里云服务器不支持虚拟机,岂不是阿里云的功能打了一个很大的折扣?!
bing一下,看到微软提供了Windows Server 2019上使用powershell命令行安装docker的步骤,步骤不复杂,于是抱着试试看的想法重新来了一遍:
# 步骤1. (真心慢……)
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
# 等了好久,吃完饭回来提示:超时
# 重启服务器,重新来过,终于成功了!
# 步骤2、3就很快了
Install-Package -Name docker -ProviderName DockerMsftProvider
Restart-Computer -Force
打开powershell测试docker,先来hello-world吧:
docker run --rm hello-world #运行成功!
# 再来一个mongo server 吧:
docker pull mongo:4.4
# 等image拉取成功后,创建一个mongo容器,端口选择28017避免跟默认端口冲突
docker run --name mongosvr --hostname mongosvr -itd -p 28017:27017 mongo:4.4
mongo --port 28017 #连接成功,创建用户也通过了
docker exec -it mongosvr bash # 失败!这个怎么回事,难道镜像还不一样?
docker exec -it mongosvr pwsh # 尝试也没通过
docker exec -it mongosvr cmd # 进入容器,居然是windows系统:Microsoft Windows [Version 10.0.17763.2300]
# 原来,此docker和彼docker还是有区别的,镜像的操作系统不一样的~
另一个必须准备部署docker的理由是:windows server有时候兼容性真的一般,以前部署的kafka server运行几天就挂掉,后来不得已切换到ubuntu上。这次安装了mongo server 5.0,一晚上挂掉2次;降到 mongo 4.4,又挂掉了!现在安装了 mongo 4.2,运行几个小时了,暂时没收到投诉~~ 如果收到投诉,立即用docker 部署mongo server!