Windows Container 版本相容性與多重架構容器映像介紹

栏目: 编程工具 · 发布时间: 4年前

内容简介:自從 Windows 核心版本 v14393 開始,也就是 Windows Server 2016 LTSC 與 Windows 10 年度更新版,正式開始支援 Windows 容器,這意謂著企業可以開始將傳統 Windows 應用程式正式容器化,透過容器化技術隔離應用程式,最大的優勢,就是容器技術會讓應用程式不會再遇到部署環境變更導致的任何問題。不過 Windows 核心版本不斷更新,也開始出現了相容問題,本篇文章將說明各種容器相容性的解決方案。Windows Containers 支援兩種容器執行方式:
Windows Container 版本相容性與多重架構容器映像介紹

自從 Windows 核心版本 v14393 開始,也就是 Windows Server 2016 LTSC 與 Windows 10 年度更新版,正式開始支援 Windows 容器,這意謂著企業可以開始將傳統 Windows 應用程式正式容器化,透過容器化技術隔離應用程式,最大的優勢,就是容器技術會讓應用程式不會再遇到部署環境變更導致的任何問題。不過 Windows 核心版本不斷更新,也開始出現了相容問題,本篇文章將說明各種容器相容性的解決方案。

Windows Container 版本相容性與多重架構容器映像介紹

兩種容器執行方式

Windows Containers 支援兩種容器執行方式:

  1. Windows Server Container
  2. 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 容器映像,也可以建置出一份同時支援 1776318362 核心版本的 Windows 容器映像。

微軟官方的容器映像,也幾乎都有支援 多重架構映像 的標籤,由於一個標籤可以整合多個架構平台,因此通常 Tag 名稱也會簡短許多。這也代表著,你以後可以一律使用這些簡短的 Tag 名稱,無論是 docker rundocker build 都可以這樣用,如此一來也可以命令列輸入也可以簡化許多!

以下我特別整理現有的 Windows Containers 常用的 Images 清單,以下列出多重架構映像的位址,以及所支援的作業系統版本:

Microsoft ASP.NET

  • 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)
  • 相關連結

Windows IIS

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 Runtime

.NET Framework SDK

  • .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)
  • 相關連結

.NET Framework Samples

  • 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 版本相容性與多重架構容器映像介紹》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

HTML5移动Web开发指南

HTML5移动Web开发指南

唐俊开 / 电子工业出版社 / 2012-3-1 / 59.00元

HTML5移动Web开发指南,ISBN:9787121160837,作者:唐俊开 著一起来看看 《HTML5移动Web开发指南》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具