打包Windows Docker鏡像
1. 環境準備
準備打包的主機:需要主機運行Windows 10(1809, 專業版或者企業版)或Windows Server 2016(1809)操作系統。如果本地沒有合適的機器,也可以在阿里云上以按量計費方式購買一臺ECS,并選擇Windows Server 1809數據中心版。另外,Windows基礎容器鏡像體積很大(4G左右),如果本地出口帶寬不夠,下載基礎鏡像和上傳打包鏡像會非常慢,甚至失敗。因此推薦帶寬低于100Mbps的用戶使用ECS來完成打包。
安裝Docker:
2. 選擇基礎鏡像
用戶應根據自己應用所需的基礎能力,選擇基礎鏡像,這里整理了三類基礎鏡像,供用戶選擇。
基礎操作系統鏡像: 微軟提供了三個基礎鏡像: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
net framework 3.5 基礎鏡像:
microsoft/dotnet-framework:3.5-runtime
net 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
3. 鏡像打包
編寫dockerfile參考windows上的dockerfile。
制作鏡像將dockerfile和待打包的文件放到一個目錄下,并在該目錄執行如下命令:
docker build -t <鏡像倉庫地址>:<鏡像版本號> .
6. 鏡像上傳
登錄到鏡像倉庫執行命令:
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
打包TAG執行命令:
docker tag <Image ID> <鏡像倉庫地址>:<鏡像版本號>
。其中鏡像倉庫地址
請在上面新建的鏡像倉庫詳情中查看。鏡像版本號
自定義輸入版本推送鏡像執行命令:
docker push <鏡像倉庫地址>:<鏡像版本號>
其中鏡像倉庫地址
、鏡像版本號
是上一步中輸入的內容。推送成功后,即可在鏡像管理
具體倉庫中查看到對應的鏡像