打包Windows Docker镜像
环境准备
准备打包的主机:
需要主机运行Windows 10(1809, 专业版或者企业版)或Windows Server 2016(1809)操作系统。如果本地没有合适的机器,也可以在阿里云上以按量计费方式购买一台ECS,并选择Windows Server 1809数据中心版。 另外,Windows基础容器镜像体积很大(4G左右),如果本地出口带宽不够,下载基础镜像和上传打包镜像会非常慢,甚至失败。因此推荐带宽低于100Mbps的用户使用ECS来完成打包。
安装Docker:
选择基础镜像
用户应根据自己应用所需的基础能力,选择基础镜像,这里整理了三类基础镜像,供用户选择。 基础操作系统镜像: 微软提供了三个基础镜像:windows servercore, windows nanoserver和powershell。
servercore 功能最完整,镜像体积最大,在4G左右,镜像地址:
registry.cn-hangzhou.aliyuncs.com/plugins/windows-servercore:1809
nanoserver 裁剪了很多特性,参见详情,镜像地址:
registry.cn-hangzhou.aliyuncs.com/plugins/windows-nanoserver:1809
powerhsell 在nanoserver基础上增加了powerhsell core,镜像地址:
registry.cn-hangzhou.aliyuncs.com/plugins/windows-powershell:nanoserver-1809
jdk基础镜像:openjdk:8u201-jdk-windowsservercore-1809
dotnet基础镜像:微软提供了.net core和.net framework两个版本,都支持容器化使用。参考决策表来选择使用.net core还是.net framework
net core 2.1 基础镜像:
mcr.microsoft.com/dotnet/core/runtime:2.1
net core 2.2 基础镜像:
mcr.microsoft.com/dotnet/core/runtime:2.2
asp.net core 2.1 基础镜像:
mcr.microsoft.com/dotnet/core/aspnet:2.1
asp.net core 2.2 基础镜像:
mcr.microsoft.com/dotnet/core/aspnet:2.2
framework 3.5 基础镜像:
microsoft/dotnet-framework:3.5-runtime
framework 4.7.2 基础镜像:
microsoft/dotnet-framework:4.7.2-runtime
tomcat基础镜像:
9.0.17版本:
registry.cn-hangzhou.aliyuncs.com/zhiying/tomcat-win:9.0.17-1809
tomcat安装目录为c:\\apache-tomcat-9.0.17
,启动命令为c:\\apache-tomcat-9.0.17\\bin\\startup.bat。
镜像打包
编写dockerfile参考windows上的dockerfile。
制作镜像
将dockerfile和待打包的文件放到一个目录下,并在该目录执行如下命令:
docker build -t <镜像仓库地址>:<镜像版本号> .
镜像上传
登录到镜像仓库
执行命令:
docker login --username=<用户名> registry.cn-shanghai.aliyuncs.com
。登录Registry的用户名是您的阿里云账号的全名,密码是您开通服务时设置的密码。您可以在镜像管理首页修改登录密码。
测试镜像
进入powershell
启动容器:
$id=$(docker run -itd <镜像仓库地址>:<镜像版本号>)
查看容器启动日志:
docker logs $id
进入容器,检查程序是否正常:
docker exec -it $id cmd
停止容器:
docker stop $id
3. 打包TAG
执行命令:docker tag <Image ID> <镜像仓库地址>:<镜像版本号>
。其中镜像仓库地址
请在上面新建的镜像仓库详情中查看。镜像版本号
自定义输入版本。
4. 推送镜像
执行命令:docker push <镜像仓库地址>:<镜像版本号>
。其中镜像仓库地址
、镜像版本号
是上一步中输入的内容。推送成功后,即可在镜像管理
具体仓库中查看到对应的镜像。