背景:公有云服务器基本是虚拟化的产物,云厂商一般不会开放子机的嵌套虚拟化功能,也就是说,子机的CPU的VT-X指令集是被禁用的,而目前在windows系统中安装docker所支持的后端服务只有hype-v和WSL1/WSL2,而无论哪种方式,都需要依赖虚拟化指令集,所以在windows系统中运行LCOW容器肯定是没戏,也就是说普通Windows云服务器不支持二次虚拟化的前提下,只能跑windows容器,无法运行Linux容器。
容器类型简单理解:LCOW容器是指基于linux系统制作的容器镜像,WCOW容器是指基于windows系统制作的容器镜像
详细说明在如下文档中有介绍:
https://cloud.tencent.com/developer/article/1758514
https://cloud.tencent.com/developer/article/2337707
https://cloud.tencent.com/developer/article/2279692
PS:本文重点介绍安装方法,关于一些概念类的问题,参考上述文档或自行百度,这里不做赘述。
在windows系统中安装Docker的话,一般常用的方法是使用docker desktop去安装,但是由于云服务器无法正常启用hype-v或WSL2,在安装Docker Desktop时会遇到无法启动的报错,这里我们需要换一种安装方法,实际上在微软的官方文档中,已经介绍了一种安装方法,操作也比较简单,直接执行脚本即可,但是由于多数国内访问海外站点常会遇到网络超时问题,需要简单修改下脚本,将安装包地址修改为国内站点
微软文档:https://learn.microsoft.com/zh-cn/virtualization/windowscontainers/quick-start/set-up-environment?tabs=dockerce
1、先将微软文档中的安装脚本下载到本地,先不要执行:https://raw.githubusercontent.com/microsoft/Windows-Containers/Main/helpful_tools/Install-DockerCE/install-docker-ce.ps1
2、修改代码段这部分,修改为清华源的地址,不然国内服务器执行大概率是拉不下来的,最终会报错。
将 https://download.docker.com/win/static/stable/x86_64/ 修改为 https://mirrors.tuna.tsinghua.edu.cn/docker-ce/win/static/stable/x86_64/
3、改之后直接运行脚本即可,在安装过程中机器会重启,重启登录之后脚本会继续执行(如果没有继续执行,可手动再次运行)
4、安装完成后执行docker version查看是否安装成功,正常打印server版本即为成功
5、修改docker镜像源为国内源站(可选步骤):
创建如下文件:C:\ProgramData\docker\config\daemon.json
内容:
{
"hosts": [
"npipe://"
],
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
这里我是设置的腾讯云内网源站,有需要可以自行修改,修改完后执行如下命令重启Docker服务:
Restart-Service Docker
6、在本地用习惯Docker Desktop的话,可能对命令不太熟悉,这里提供一个web管理的开源镜像,供大家使用(可选步骤)
在linux中管理docker容器常用Portainer,事实上Portainer也提供了windwos容器的,如下是安装方法:先创建数据卷,然后启动容器即可。
官方文档:https://docs.portainer.io/start/install-ce/server/docker/wcs
docker volume create portainer_data
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart always -v \\.\pipe\docker_engine:\\.\pipe\docker_engine -v portainer_data:C:\data portainer/portainer-ce:2.21.1
Containerd的安装比较简单,下面介绍其中一种方法,与Docker一样,Containerd的安装在上面提到的微软文档中也有介绍,不过实际测试下来使用微软官网提供的脚本,实测无法正常安装(原因没有深究),使用kubernetes官网提到的安装方法来安装测试是可以正常跑通的:https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/kubeadm/adding-windows-nodes/
同样也是先下载脚本:https://raw.githubusercontent.com/kubernetes-sigs/sig-windows-tools/master/hostprocess/Install-Containerd.ps1
接下来打开powershell,先cd到脚本存放目录,然后运行脚本,需注意,运行脚本时需要添加 -skipHypervisorSupportCheck 参数,来跳过Hype-v检测,同时指定软件版本,其他参数参考文档说明
参考命令: .\Install-Containerd.ps1 -ContainerDVersion 1.7.23 -skipHypervisorSupportCheck
上述命令安装的是1.7.23版本的Containerd,脚本执行过程可能会比较久,需要耐心等待,一次不成功多执行几次,因为需要从GitHub下载软件包,会比较慢,安装完成后机器会重启
如果实在执行多次都由于下载文件失败,可以先把这两个包下载下来:
Containerd.:https://github.com/containerd/containerd/releases
crictl:https://github.com/kubernetes-sigs/cri-tools/releases/ (文件比较多,注意不要找错)
下载之后分别重名为containerd.tar.gz和crictl.tar.gz,然后放到这个目录(没有的话自行创建)C:\Program Files\containerd
再修改安装脚本,注释或删掉这两句:
然后再执行安装命令
结果展示(这里我用的是ctr工具管理的,默认安装的是crictl):
最后再啰嗦下,无论是Docker还是Containerd,在Windows 系统的云服务器CVM中,都只能运行Windows容器,无法运行Linux容器。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。