Windows 和容器

適用於:Windows Server 2022、Windows Server 2019、Windows Server 2016

容器是一種跨內部部署和雲端中的不同環境封裝和執行 Windows 和 Linux 應用程式的技術。 容器提供了輕量型、隔離的環境,讓應用程式更容易開發、部署和管理。 容器可快速啟動和停止,使其適合需要快速適應變動需求的應用程式。 容器的輕量本質也會使其成為可增加基礎結構密度和使用率的實用工具。

Graphic showing how containers can run in the cloud or on-premises, supporting monolithic apps or microservices written in nearly any language.

若要檢視已規劃且目前可用功能的藍圖,請參閱 Windows Server 容器藍圖。 此外,請參閱 事件 以檢視 Windows 容器的最新影片簡報和部落格文章。

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 Container Registry,然後使用 Azure Kubernetes Service (AKS)協調器大規模部署和管理它。
    • Azure Kubernetes Service 會將容器部署至 Azure 虛擬機器,並進行大規模管理 (不論是數十個、數百個或甚至數千個容器)。 Azure 虛擬機器會執行自訂的 Windows Server 映像 (如果您要部署 Windows 型應用程式) 或自訂的 Ubuntu Linux 映像 (如果您要部署 Linux 型應用程式)。
  • 使用 Azure Stack HCI 上的 AKS、搭配 AKS 引擎的 Azure Stack 或搭配 OpenShift 的 Azure Stack,在內部部署部署容器。 您也可以在 Windows Server 上自行設定 Kubernetes (請參閱 Windows上的 Kubernetes),而我們也致力於在 RedHat OpenShift 容器平台上執行 Windows 容器的支援。

容器的運作方式

容器是隔離且輕量型的套件,可在主機操作系統上執行應用程式。 容器建置在主機操作系統核心之上(可視為操作系統的埋藏管道),如下圖所示。

Architectural diagram showing how containers run on top of the kernel

雖然容器共用主機作業系統的核心,但容器無法不受限制地存取該核心。 然而,容器會取得隔離的 (在某些情況下為虛擬化) 的系統檢視。 例如,容器可以存取檔案系統和登錄的虛擬化版本,但任何變更只會影響容器,並在其停止時捨棄。 若要儲存資料,容器可以掛接持續性儲存體,例如 Azure 磁碟或檔案共用 (包括 Azure 檔案)。

容器建立於核心之上,但核心並未提供所有應用程式需要執行的 API 和服務—大部分的 API 和服務是由使用者模式中的核心上方,所執行的系統檔案 (程式庫) 提供。 由於容器和主機的使用者模式環境隔離,因此容器需要自身的這些使用者模式系統檔案複本,以封裝成基礎映像影像。 基底映射可作為容器建置的基礎層,並提供核心未能提供的作業系統服務。 但我們稍後會詳細討論容器映像。

容器與虛擬機器

與容器相比,虛擬機器 (VM) 會執行完整的作業系統 (包括它自己的核心),如下圖所示。

Architectural diagram showing how VMs run a complete operating system beside the host operating system

容器和虛擬機器都有其用途:事實上,許多容器部署都會使用虛擬機器作為主機作業系統,而不是直接在硬體上執行,尤其是在雲端中執行容器時。

如需這些互補技術的相似性與差異詳細資訊,請參閱容器與虛擬機器

容器映像

所有容器都是從容器映像建立而來。 容器映像是組織成位於本機計算機或遠端容器登錄層堆疊的檔案組合。 容器映像包含支援應用程式所需的使用者模式操作系統檔案、應用程式的任何運行時間或相依性,以及應用程式必須正確執行的任何其他組態檔。

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 提供的選項:

在 Windows 上試用容器

若要開始在 Windows Server 或 Windows 10 上使用容器,請參閱下列各項:

若要協助判斷您的案例適合那些 Azure 服務,請參閱 Azure 容器服務選擇要用於裝載應用程式的 Azure 服務

資源

若要檢視使用 Windows Server 容器的資源: