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
- servercore 功能最完整,鏡像體積最大,在4G左右,鏡像地址:
-
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
- net core 2.1 基礎鏡像:
-
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(https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/manage-docker/manage-windows-dockerfile)。 - 制作鏡像
將dockerfile和待打包的文件放到一個目錄下,並在該目錄執行如下命令:docker build -t <鏡像倉庫地址>:<鏡像版本號> .
4. 鏡像上傳
- 登錄到鏡像倉庫
執行命令: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 <鏡像倉庫地址>:<鏡像版本號>
其中鏡像倉庫地址
、鏡像版本號
是上一步中輸入的內容。推送成功后,即可在鏡像管理
具體倉庫中查看到對應的鏡像