Docker: windows下跑windows镜像

        有时候,当我们的项目必须要在win系统下跑,并且开发环境相对复杂(难以重新配置到新设备),这个时候其实可以用docker拉取win的镜像,配置好一个镜像后,就可以一劳永逸。

        windows10以上系统和Windows server的安装docker和拉取镜像有所不同,具体可以参考:

         Windows 容器文档 | Microsoft Learn

前提:

        安装好docker后,控制台输入指令:docker version 即可查看本地机器和服务机器的系统版本,如果两者的版本都是windows(如图1),那就可以下一步。

 图1 windows server 2016系统的服务器

拉取python-windows镜像:

        往往我们想要的镜像,在docker hub上都已经有人做好了,我们可以拉取下来,自己再改改就可以了。依python为例,在Docker Hub上搜索python,如图2,点第一个。

 图2 docker hub搜索python

        进去之后,点击Overview,往下拉可以看到Dockerfile制作镜像的方法(图3);点击Tags,可以看到很多版本,但是都是linux系统的(图4)。 

 图3 Dockerfile for python

图4  python-linux镜像

        回到Overview,往下拉,可以找到python:<version>-windowsservercore(如图5),这里有介绍,这个版本的镜像是基于 Windows Server Core的,并且可以运行在win10和win server 2016上。只需要将图3的python版本换成这里的windowsserver版本就行了(没试过应该是docker pull python:3.8-windowsservercore或者在Dockerfile里FROM python:3.8-windowsservercore)。

 图5 python:<version>-windowsservercore

拉取windows server  core基础镜像:

可能你的需求不是python+win,那么,你可以在windows server  core基础镜像的基础上安装你的软件包。打开  Windows Server Core,可以看到有很多版本(图6 图7)。

图6 

 图7

重点来了:比如我在我的windows server 2016上,pwoershell中输入,如图8。

docker pull mcr.microsoft.com/windows/servercore:ltsc2022

会报错:

no matching manifest for windows/amd64 10.0.14393 in the manifest list entries

图8 拉取镜像报错

        这是因为我们下载的版本和我们电脑的win版本不一致导致的。那么你可能要问了,我该怎么拉取和我电脑对应版本的镜像呢?  

        解决方法:打开  Windows Server Core,往下翻,我们可以看到一个表格,这个表格对应了很多版本(图9)。

图 9

        图8报错的信息中有告知,我的windows server 2016的系统版本10.0.14393,对应的镜像版本是ltsc2016,这时候我们

docker pull mcr.microsoft.com/windows/servercore:ltsc2016

         就可以拉取成功了。再不行就换ltsc2016-amd64,具体和ltsc2016有什么区别,有知道的可以评论区回答一下。

        如果你是windows10系统或者别的系统,可以在图7跳转,找到自己的版本拉取。

        win系统拉取win镜像不成功的大部分原因就是版本没有对齐。

猜你喜欢

转载自blog.csdn.net/xuqingda/article/details/128000026