適用於:Windows Server 2025、Windows Server 2022、Windows Server 2019、Windows Server 2016
容器是一種跨內部部署和雲端中的不同環境封裝和執行 Windows 和 Linux 應用程式的技術。 容器提供了輕量型、隔離的環境,讓應用程式更容易開發、部署和管理。 容器可快速啟動和停止,使其適合需要快速適應變動需求的應用程式。 貨櫃的輕量特性也使其成為提升基礎設施密度與利用率的有用工具。
Microsoft 容器生態系統
Microsoft 提供許多工具與平台,協助您在容器中開發與部署應用程式:
使用 Docker Desktop (其會使用 Windows 內建的容器功能),在 Windows 10 上執行 Windows 型或 Linux 型容器以便進行開發和測試。 您也可以在 Windows Server 上以原生方式執行容器。
使用 Visual Studio 中的強大的容器支援和 Visual Studio Code (其包括對 Docker、Docker Compose、Kubernetes、Helm 和其他實用技術的支援),開發、測試、發佈及部署 Windows 型容器。
將您的應用程式當作容器映像發佈至公用 DockerHub 供其他人使用,或發佈至私人 Azure Container Registry 供貴組織本身進行開發和部署,並直接從 Visual Studio 和 Visual Studio Code 進行推送和提取。
在 Azure 上或其他雲端大規模部署容器:
從容器登錄檔(例如 Azure 容器登錄檔)拉取你的應用程式,然後使用像 Azure Kubernetes Service(AKS)這類的編排器大規模部署和管理。
Azure Kubernetes Service 將容器部署到 Azure 虛擬機,並進行大規模管理。 你可以運行數十個、數百個,甚至數千個容器。
Azure 虛擬機器可執行自訂的 Windows Server 映像檔以支援 Windows 應用程式,或執行自訂的 Ubuntu Linux 映像檔以支援 Linux 應用程式。
透過使用 Azure Arc 啟用的 Azure Kubernetes Service (AKS)、Azure Stack Hub 上的 AKS 引擎,或 Azure Stack Hub 與 OpenShift 的 Azure Stack Hub 來部署本地容器。 你也可以在 Windows Server 上自己設定 Kubernetes。 欲了解更多資訊,請參閱 Windows 上的 Kubernetes 版本。 Microsoft 也正在 RedHat OpenShift 容器平台上開發對 Windows 容器的支援。
容器的運作方式
容器是隔離且輕量型的套件,可在主機操作系統上執行應用程式。 容器運行於主機作業系統的核心之上(你可以將其視為作業系統的埋藏管線),如下圖所示。
雖然容器共用主機作業系統的核心,但容器無法不受限制地存取該核心。 然而,容器會取得隔離的 (在某些情況下為虛擬化) 的系統檢視。 例如,容器可以存取檔案系統和登錄的虛擬化版本,但任何變更只會影響容器,並在其停止時捨棄。 若要儲存數據,容器可以掛接持續性記憶體,例如 Azure 磁碟,或像是 Azure 檔案等檔案共用。
容器是建立在核心之上,但核心並未提供應用程式執行所需的所有 API 和服務。 大多數這些 API 和服務來自於在使用者模式下運行於核心之上的系統檔案(函式庫)。 由於容器與主機的使用者模式環境隔離,容器需要擁有這些使用者模式系統檔案的獨立副本。 這些檔案會被打包成所謂的基礎映像檔。 基礎映像是你建構容器的基礎層,提供核心未提供的作業系統服務。
容器與虛擬機器
與容器不同,虛擬機(VM)執行完整的作業系統——包括自身核心——如下圖所示。
容器和虛擬機各有其用途。 事實上,許多容器部署使用虛擬機作為主機作業系統,而非直接在硬體上運行,尤其是在雲端運行容器時。
欲了解更多關於這些互補技術的異同,請參見 容器與虛擬機。
容器映像
你是從容器圖片建立所有容器。 容器映像是組織成位於本機計算機或遠端容器登錄層堆疊的檔案組合。 容器映像包含應用程式需要執行的使用者模式作業系統檔案。 映像檔同時包含應用程式的執行時、相依性,以及應用程式所需的任何設定檔。
Microsoft 提供數個映像 (稱為基底映像),您可將其作為建立自有容器映像的起點:
- Windows - 包含一組完整的 Windows API 和系統服務 (沒有伺服器角色)。
- Windows Server - 包含一組完整的 Windows API 和系統服務。
- Windows Server Core - 較小的映像,其包含 Windows Server API 的子集 – 也就是完整的 .NET 架構。 它也包含大部分但不是全部的伺服器角色(例如傳真伺服器不包含)。
- Nano Server - 最小的 Windows Server 映射,並包含 .NET Core API 和某些伺服器角色的支援。
容器映像是由一系列圖層所組成。 每一層都包含一組檔案,若覆疊在一起,即代表您的容器映像。 由於容器的分層特性,你不一定一定要針對基礎映像來建立 Windows 容器。 相反地,你可以鎖定已經擁有你想要框架的另一張圖片。 例如,.NET 小組會發佈帶有 .NET 核心執行階段的 .NET 核心映像。 這可讓使用者不需要重複進行安裝 .NET 核心的程序,而是可以重複使用此容器映像的層級。 .NET 核心映像本身是根據 Nano Server 所建立。
欲了解更多資訊,請參閱 容器基底圖片。
容器使用者
開發人員的容器
容器可協助開發人員更快速地建置及提供更高品質的應用程式。 使用容器,開發人員可以建立在幾秒內部署的容器映像 (在不同的環境中都相同)。 容器的作用是跨小組共用程式碼及啟動開發環境的簡單機制,但不會影響主機檔案系統。
容器具有可攜性和廣泛性,可執行以任何語言撰寫的應用程式,而且與任何執行 Windows 10、1607 版或更新版本或 Windows Server 2016 或更新版本的電腦相容。 開發人員可以在其膝上型或桌上型電腦本機建立及測試容器,然後將相同的容器映像部署到其公司的私人雲端、公用雲端或服務提供者。 容器既有的靈活性可支援大規模、虛擬化雲端環境中的新型應用程式開發模式。 開發人員最有用的優點可能是隔離環境的能力,讓應用程式一律取得您指定的連結庫版本,以避免與相依性發生衝突。
IT 專業人員的容器
容器可協助系統管理員建立更容易更新和維護並可充分利用硬體資源的基礎結構。 IT 專業人員可以使用容器為其開發、品管及生產小組提供標準化的環境。 藉由使用容器,系統管理員可抽離作業系統安裝與基礎結構的差異。
你也可以利用容器的互動模式,在同一系統上執行命令列工具的衝突實例。
容器協調流程
在設定容器型環境時,協調器是基礎結構的重要部分。 在大規模管理容器化應用程式時,編排器是不可或缺的。 雖然你可以用 Docker 和 Windows 手動管理幾個容器,但應用程式通常會使用五個、十個甚至數百個容器,因此編排器變得不可或缺。
為了協助大規模管理生產環境中的容器,於是建立了容器協調器。 協調器可提供下列功能:
協調器可協助您大規模成長容器化應用程式,並提供下列功能:
- 大規模部署
- 工作負載排程
- 健康狀態監視
- 當節點失敗時容錯移轉
- 擴大或縮小規模
- 網路
- 服務探索
- 協調應用程式升級
- 叢集節點親和性
有許多不同的協調器可供您用於 Windows 容器,以下是 Microsoft 提供的選項:
- Azure Kubernetes Service (AKS) - 使用受控 Azure Kubernetes 服務
- Azure Stack HCI 上的 Azure Kubernetes Service (AKS) - 使用 Azure Kubernetes Service 內部部署
在 Windows 上試用容器
想開始在 Windows Server 或 Windows 10 上使用容器,請參考以下文章:
如需判斷哪些 Azure 服務適合你的情境,請參閱 Azure 容器服務 及 選擇用於主機應用程式的 Azure 服務。
資源
欲查看使用 Windows Server 容器的資源,請參閱以下資源:
如需目前的問題和計劃性功能升級,請參閱 Windows 容器 GitHub 存放庫。
請參考部落格: Windows Containers Blog。
若要連絡 Windows Server 容器小組,請傳送電子郵件給 Windows Containers Customers 群組,。