内容简介:自從 Windows 核心版本 v14393 開始,也就是 Windows Server 2016 LTSC 與 Windows 10 年度更新版,正式開始支援 Windows 容器,這意謂著企業可以開始將傳統 Windows 應用程式正式容器化,透過容器化技術隔離應用程式,最大的優勢,就是容器技術會讓應用程式不會再遇到部署環境變更導致的任何問題。不過 Windows 核心版本不斷更新,也開始出現了相容問題,本篇文章將說明各種容器相容性的解決方案。Windows Containers 支援兩種容器執行方式:
自從 Windows 核心版本 v14393 開始,也就是 Windows Server 2016 LTSC 與 Windows 10 年度更新版,正式開始支援 Windows 容器,這意謂著企業可以開始將傳統 Windows 應用程式正式容器化,透過容器化技術隔離應用程式,最大的優勢,就是容器技術會讓應用程式不會再遇到部署環境變更導致的任何問題。不過 Windows 核心版本不斷更新,也開始出現了相容問題,本篇文章將說明各種容器相容性的解決方案。
兩種容器執行方式
Windows Containers 支援兩種容器執行方式:
- Windows Server Container
- Hyper-V Container
第一種 Windows Server Container 提供一種 程序隔離 (Process isolation) 執行模式,可以讓你直接透過 Docker Engine 存取現有 Host 主機的 Kernel 資源。直接共用 Host 主機的作業系統核心,意謂著可以得到較好的容器啟動效能,啟動時間短、執行速度快,是一種相當理想的執行模式。不過這種模式有個嚴重的問題,那就是當作業系統升級後,由於核心版本也跟著升級,因此 現有的容器映像(image) 將 無法再使用程序隔離模式執行 !
第二種 Hyper-V Container 則提供另一種 Hyper-V 隔離 (Hyper-V isolation) 執行模式,顧名思義,這些容器將會執行在一種極輕量的 Hyper-V 虛擬機中,這種類型的容器不會直接存取目前 Host 主機的作業系統核心,而是在虛擬中執行另一份輕量的 Windows 核心,讓容器直接存取這份核心。如此一來將會得到較好的隔離性,一來可以提供 SaaS 環境更好的安全性,另一方面則是可以讓你 執行不同版本的 Windows 作業系統核心 !
由於在 Windows Server 的環境下比較要求穩定,作業系統核心通常不會頻繁的升級,因此預設 Windows Server 作業系統預設以 程序隔離 為主。
而 Windows 10 由於是個人開發用,核心升級的機率也自然較高,因此預設 Windows 10 作業系統預設以 Hyper-V 隔離 為主。像我的 Windows 10 筆電就剛從 1809 升級到 1903,核心版本從 17763
升級到 18362
,照理說原本透過 docker build
建立出來的 images 應該是不相容的,但因為預設使用 Hyper-V 隔離的關係,所以所有 images 還是可以正常的在我的電腦執行!
不過,當你的 Windows 10 升級到新版核心後,透過 docker build
建置出來的 new images 將無法給較低核心版本的 Windows 執行,這點還是必須注意。例如 Windows 10 ver 1903 所建置出來的 images 無法在 Windows Server 2019 (LTSC) 使用,因為較低核心版本的 Windows 不能執行較高核心版本建置出來的 image!
完整說明可以參考 Windows 容器版本相容性 | Microsoft Docs 文件說明。
多重架構映像 (multi-architecture images)
目前微軟所管理的容器映像,幾乎都有提供所有核心版本的標籤(Tag),我以 Microsoft ASP.NET 為例,官方就提供了數十個不同版本、不同平台架構的容器映像。例如 mcr.microsoft.com/dotnet/framework/aspnet:4.8-20190611-windowsservercore-1903
就是支援 .NET Framework 4.8 且跑在 Windows Server Core 1903 的容器映像。另外像 mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-20190611-windowsservercore-ltsc2019
則是支援 .NET Framework 4.7.2 且跑在 Windows Server Core 2019 (LTSC) 版本的容器映像。這名字實在太難記了!
Docker Engine 從 1.10 版本開始正式支援 多重架構映像 (multi-arch images) 格式,這也代表著你可以建置出一份含有支援多重架構的容器映像檔。例如可以建置出一份同時支援 x86
, amd64
, arm
等不同 CPU 架構的 Linux 容器映像,也可以建置出一份同時支援 17763
與 18362
核心版本的 Windows 容器映像。
微軟官方的容器映像,也幾乎都有支援 多重架構映像 的標籤,由於一個標籤可以整合多個架構平台,因此通常 Tag 名稱也會簡短許多。這也代表著,你以後可以一律使用這些簡短的 Tag 名稱,無論是 docker run
或 docker build
都可以這樣用,如此一來也可以命令列輸入也可以簡化許多!
以下我特別整理現有的 Windows Containers 常用的 Images 清單,以下列出多重架構映像的位址,以及所支援的作業系統版本:
-
ASP․NET 4.8
docker pull mcr.microsoft.com/dotnet/framework/aspnet:4.8
支援的作業系統:
- Windows Server 1903 (SAC)
- Windows Server 2019 (LTSC)
- Windows Server 1803 (SAC)
- Windows Server 2016 (LTSC)
-
ASP․NET 3.5
docker pull mcr.microsoft.com/dotnet/framework/aspnet:3.5
支援的作業系統:
- Windows Server 1903 (SAC)
- Windows Server 2019 (LTSC)
- Windows Server 1803 (SAC)
- Windows Server 2016 (LTSC)
-
ASP․NET 4.7.2
docker pull mcr.microsoft.com/dotnet/framework/aspnet:4.7.2
支援的作業系統:
- Windows Server 2019 (LTSC)
- Windows Server 1803 (SAC)
- Windows Server 2016 (LTSC)
-
相關連結
-
IIS
docker pull mcr.microsoft.com/windows/servercore/iis:windowsservercore
支援的作業系統:
- Windows Server 1903 (SAC)
- Windows Server 2019 (LTSC)
- Windows Server 1803 (SAC)
- Windows Server 2016 (LTSC)
-
相關連結
Windows Communication Framework (WCF)
-
WCF on .NET Framework 4.8
docker pull mcr.microsoft.com/dotnet/framework/wcf:4.8
支援的作業系統:
- Windows Server 1903 (SAC)
- Windows Server 2019 (LTSC)
- Windows Server 1803 (SAC)
- Windows Server 2016 (LTSC)
-
WCF on .NET Framework 4.7.2
docker pull mcr.microsoft.com/dotnet/framework/wcf:4.7.2
支援的作業系統:
- Windows Server 2019 (LTSC)
- Windows Server 1803 (SAC)
- Windows Server 2016 (LTSC)
-
相關連結
-
.NET Framework 4.8
docker pull mcr.microsoft.com/dotnet/framework/runtime:4.8
支援的作業系統:
- Windows Server 1903 (SAC)
- Windows Server 2019 (LTSC)
- Windows Server 1803 (SAC)
- Windows Server 2016 (LTSC)
-
.NET Framework 3.5
docker pull mcr.microsoft.com/dotnet/framework/runtime:3.5
支援的作業系統:
- Windows Server 1903 (SAC)
- Windows Server 2019 (LTSC)
- Windows Server 1803 (SAC)
- Windows Server 2016 (LTSC)
-
相關連結
-
.NET Framework 4.8
docker pull mcr.microsoft.com/dotnet/framework/sdk:4.8
支援的作業系統:
- Windows Server 1903 (SAC)
- Windows Server 2019 (LTSC)
- Windows Server 1803 (SAC)
- Windows Server 2016 (LTSC)
-
.NET Framework 4.7.2
docker pull mcr.microsoft.com/dotnet/framework/sdk:4.7.2
支援的作業系統:
- Windows Server 2019 (LTSC)
- Windows Server 1803 (SAC)
- Windows Server 2016 (LTSC)
-
.NET Framework 4.7.1
docker pull mcr.microsoft.com/dotnet/framework/sdk:4.7.1
支援的作業系統:
- Windows Server 2016 (LTSC)
-
.NET Framework 3.5
docker pull mcr.microsoft.com/dotnet/framework/sdk:3.5
支援的作業系統:
- Windows Server 1903 (SAC)
- Windows Server 2019 (LTSC)
- Windows Server 1803 (SAC)
- Windows Server 2016 (LTSC)
-
相關連結
-
dotnetapp
docker pull mcr.microsoft.com/dotnet/framework/samples:dotnetapp
支援的作業系統:
- Windows Server 1903 (SAC)
- Windows Server 2019 (LTSC)
- Windows Server 1803 (SAC)
- Windows Server 2016 (LTSC)
-
aspnetapp
docker pull mcr.microsoft.com/dotnet/framework/samples:aspnetapp
支援的作業系統:
- Windows Server 1903 (SAC)
- Windows Server 2019 (LTSC)
- Windows Server 1803 (SAC)
- Windows Server 2016 (LTSC)
-
wcfservice
docker pull mcr.microsoft.com/dotnet/framework/samples:wcfservice
支援的作業系統:
- Windows Server 1903 (SAC)
- Windows Server 2019 (LTSC)
- Windows Server 1803 (SAC)
- Windows Server 2016 (LTSC)
-
wcfclient
docker pull mcr.microsoft.com/dotnet/framework/samples:wcfclient
支援的作業系統:
- Windows Server 1903 (SAC)
- Windows Server 2019 (LTSC)
- Windows Server 1803 (SAC)
- Windows Server 2016 (LTSC)
-
相關連結
Microsoft SQL Server Developer for Windows Server 2016
-
SQL Server 2017
docker pull microsoft/mssql-server-windows-developer:latest docker pull microsoft/mssql-server-windows-developer:2017-CU1 docker pull microsoft/mssql-server-windows-developer:2017-GA
支援的作業系統:
- Windows Server 2016 (LTSC)
-
相關連結
Microsoft SQL Server Developer for Windows Server 2019, 1903
-
SQL Server 2017
docker pull willh/mssql-server-windows-developer:1809 docker pull willh/mssql-server-windows-developer:1903
支援的作業系統:
- Windows Server 1903 (SAC)
- Windows Server 2019 (LTSC)
-
相關連結
批次下載所有 Images
Windows Server, 1903 (SAC)
docker pull mcr.microsoft.com/dotnet/framework/aspnet:4.8 docker pull mcr.microsoft.com/dotnet/framework/aspnet:3.5 docker pull mcr.microsoft.com/dotnet/framework/aspnet:4.7.2 docker pull mcr.microsoft.com/dotnet/framework/wcf:4.8 docker pull mcr.microsoft.com/dotnet/framework/wcf:4.7.2 docker pull mcr.microsoft.com/dotnet/framework/runtime:4.8 docker pull mcr.microsoft.com/dotnet/framework/runtime:3.5 docker pull mcr.microsoft.com/dotnet/framework/sdk:4.8 docker pull mcr.microsoft.com/dotnet/framework/sdk:4.7.2 docker pull mcr.microsoft.com/dotnet/framework/sdk:4.7.1 docker pull mcr.microsoft.com/dotnet/framework/sdk:3.5 docker pull mcr.microsoft.com/dotnet/framework/samples:dotnetapp docker pull mcr.microsoft.com/dotnet/framework/samples:aspnetapp docker pull mcr.microsoft.com/dotnet/framework/samples:wcfservice docker pull mcr.microsoft.com/dotnet/framework/samples:wcfclient docker pull mcr.microsoft.com/windows/servercore/iis:windowsservercore docker pull willh/mssql-server-windows-developer:1903
Windows Server 2019 (LTSC)
docker pull mcr.microsoft.com/dotnet/framework/aspnet:4.8 docker pull mcr.microsoft.com/dotnet/framework/aspnet:3.5 docker pull mcr.microsoft.com/dotnet/framework/aspnet:4.7.2 docker pull mcr.microsoft.com/dotnet/framework/wcf:4.8 docker pull mcr.microsoft.com/dotnet/framework/wcf:4.7.2 docker pull mcr.microsoft.com/dotnet/framework/runtime:4.8 docker pull mcr.microsoft.com/dotnet/framework/runtime:3.5 docker pull mcr.microsoft.com/dotnet/framework/sdk:4.8 docker pull mcr.microsoft.com/dotnet/framework/sdk:4.7.2 docker pull mcr.microsoft.com/dotnet/framework/sdk:4.7.1 docker pull mcr.microsoft.com/dotnet/framework/sdk:3.5 docker pull mcr.microsoft.com/dotnet/framework/samples:dotnetapp docker pull mcr.microsoft.com/dotnet/framework/samples:aspnetapp docker pull mcr.microsoft.com/dotnet/framework/samples:wcfservice docker pull mcr.microsoft.com/dotnet/framework/samples:wcfclient docker pull mcr.microsoft.com/windows/servercore/iis:windowsservercore docker pull willh/mssql-server-windows-developer:1809
Windows Server, 1803 (SAC)
docker pull mcr.microsoft.com/dotnet/framework/aspnet:4.8 docker pull mcr.microsoft.com/dotnet/framework/aspnet:3.5 docker pull mcr.microsoft.com/dotnet/framework/aspnet:4.7.2 docker pull mcr.microsoft.com/dotnet/framework/wcf:4.8 docker pull mcr.microsoft.com/dotnet/framework/wcf:4.7.2 docker pull mcr.microsoft.com/dotnet/framework/runtime:4.8 docker pull mcr.microsoft.com/dotnet/framework/runtime:3.5 docker pull mcr.microsoft.com/dotnet/framework/sdk:4.8 docker pull mcr.microsoft.com/dotnet/framework/sdk:4.7.2 docker pull mcr.microsoft.com/dotnet/framework/sdk:4.7.1 docker pull mcr.microsoft.com/dotnet/framework/sdk:3.5 docker pull mcr.microsoft.com/dotnet/framework/samples:dotnetapp docker pull mcr.microsoft.com/dotnet/framework/samples:aspnetapp docker pull mcr.microsoft.com/dotnet/framework/samples:wcfservice docker pull mcr.microsoft.com/dotnet/framework/samples:wcfclient docker pull mcr.microsoft.com/windows/servercore/iis:windowsservercore
Windows Server 2016 (LTSC)
docker pull mcr.microsoft.com/dotnet/framework/aspnet:4.8 docker pull mcr.microsoft.com/dotnet/framework/aspnet:3.5 docker pull mcr.microsoft.com/dotnet/framework/aspnet:4.7.2 docker pull mcr.microsoft.com/dotnet/framework/wcf:4.8 docker pull mcr.microsoft.com/dotnet/framework/wcf:4.7.2 docker pull mcr.microsoft.com/dotnet/framework/runtime:4.8 docker pull mcr.microsoft.com/dotnet/framework/runtime:3.5 docker pull mcr.microsoft.com/dotnet/framework/sdk:4.8 docker pull mcr.microsoft.com/dotnet/framework/sdk:4.7.2 docker pull mcr.microsoft.com/dotnet/framework/sdk:4.7.1 docker pull mcr.microsoft.com/dotnet/framework/sdk:3.5 docker pull mcr.microsoft.com/dotnet/framework/samples:dotnetapp docker pull mcr.microsoft.com/dotnet/framework/samples:aspnetapp docker pull mcr.microsoft.com/dotnet/framework/samples:wcfservice docker pull mcr.microsoft.com/dotnet/framework/samples:wcfclient docker pull mcr.microsoft.com/windows/servercore/iis:windowsservercore docker pull microsoft/mssql-server-windows-developer
相關連結
以上所述就是小编给大家介绍的《Windows Container 版本相容性與多重架構容器映像介紹》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 从Docker容器到Linux可启动映像
- 深入iOS系统底层之映像文件操作API介绍
- 深入iOS系统底层之映像文件操作API介绍
- 用 Drone CI/CD 整合 Packer 自動產生 GCP 或 AWS 映像檔
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JavaScript Patterns
Stoyan Stefanov / O'Reilly Media, Inc. / 2010-09-21 / USD 29.99
What's the best approach for developing an application with JavaScript? This book helps you answer that question with numerous JavaScript coding patterns and best practices. If you're an experienced d......一起来看看 《JavaScript Patterns》 这本书的介绍吧!