準備要部署容器的 Windows Server 2019 主機

已完成

注意

為了本 Microsoft Learn 課程模組的目的,所有範例都會使用 Docker CLI 執行。 這些命令應該適用於使用 Docker Desktop 的 Windows 10 和 11,以及使用 Moby 或 MCR 的 Windows Server。 容器化的環境會有其他 CLI 選項,而且命令會有所不同。

Contoso Windows Server 系統管理員必須了解來源容器基礎映像、如何判斷哪些容器基礎映像可供使用且適合使用,以及如何在本機將基礎映像提取至本機。 這可讓系統管理員建立並執行任何必要的容器。

下載容器型映像

安裝選擇的容器執行階段之後,下一步是提取基礎映像,以用於為您的容器提供基本的 OS 服務層級。 接著,您會建立並執行基礎映像型的容器。

容器基礎映像包含:

  • 支援佈建的應用程式所需的使用者模式 OS 檔案。

  • 應用程式所需的任何執行階段檔案或相依性。

  • 應用程式佈建及正確執行所需的任何其他設定檔。

Microsoft 會提供下表中的基礎作業系統映像,作為建置您專屬容器映像的起點。

基礎映像名稱 詳細資料
Server Core 包含 Windows Server 應用程式開發介面 (API) 子集的映像,例如完整的 .NET Framework。 其中也包含大部分的伺服器角色。 此映像適用於現有應用程式正在「容器化」的案例。
Nano Server 最小的 Windows Server 映像,支援 .NET API 和某些伺服器角色。 此映像需要針對 Nano Server 撰寫應用程式,而且非常適合依賴 Windows 的新應用程式。
Windows 包含一組完整的 Windows API 和系統服務;但不包含伺服器角色。 從 Windows Server 2022 開始,此映像已由伺服器映像取代。
伺服器 類似於 Windows 映像,此基礎映像包含整組 Windows Server API 和系統服務。 這會導致更大的容器映像,但應用程式相容性會更高。 此映像適用於現有應用程式正在容器化的案例,但 Server Core 映像不提供應用程式的必要相依性。

注意

Windows 主機 OS 版本必須符合容器 OS 版本。 若要根據較新的 Windows 組建執行容器,您必須確定主機上已安裝對等的 OS 版本。

如果您的主機伺服器包含較新的 OS 版本,則可使用 Hyper-V 隔離模式來執行舊版的 Windows 容器。

如需主機和容器映像相容性的詳細資訊,請參閱 Windows 容器版本相容性

您可以透過 Microsoft Container Registry 找到並下載基礎映像。 使用 docker pull 命令來下載特定的基礎映像。

重要

作業系統基礎映像會提供 Windows Server 作業系統元件及其伺服器角色。 Microsoft 也會提供已安裝之不同架構的特定映像,例如 IIS、.Net Framework 和 .Net。

輸入 docker pull 命令時,請指定和主機電腦版本相符的版本。 例如,如果要根據 Windows Server 2022 提取 Nano Server 映像,您可以使用下列命令:

docker pull mcr.microsoft.com/windows/nanoserver:ltsc2022

如果要提取 Windows Server 2019 Server Core 映像,您可以使用下列命令:

docker pull mcr.microsoft.com/windows/servercore:ltsc2019

下載容器所需的基礎映像之後,可以透過輸入下列命令來確認可在本機使用的映像,並顯示中繼資料資訊:

docker images

執行 Windows 容器

在大規模的實際執行環境中,您最有可能透過容器協調器與容器互動,例如 Kubernetes 或 Docker Swarm。 在較小的開發/測試環境中,您可以透過 CLI 在 Windows Server 上建立、移除和管理容器。

您也可以瀏覽 Docker Hub 或 Microsoft Container Registry,以存取和提取預建映像。 有兩個主要替代方案可用於建置容器映像,以裝載您的應用程式:

  • 使用開發人員工具建置容器映像。 當應用程式是由開發人員撰寫時,可以直接從開發人員整合式開發環境 (IDE) 將它封裝,例如 Visual Studio。

  • 使用 Dockerfile 建置容器映像。 Dockerfile 是一份文字文件,其中包含使用者可在命令列上呼叫來組合映像的所有命令。 Visual Studio 之類的工具則會以原生方式針對新應用程式建置 Dockerfile,但您可以選擇手動建置自己的 Dockerfile。

注意

還有其他根據執行中的容器建立容器映像的選項。 這類似於從執行中的 VM 建立黃金映像。 不建議使用這個方法。 下一節會提供更多詳細資料。

在 Windows 上使用 Dockerfile 將容器映像建立自動化

Docker Desktop 引擎和 MCR 包含用於將建立容器映像流程自動化的工具。 雖然您可以手動建立容器映像,但採用自動化映像建立流程可提供許多優點,包括:

  • 將容器映像儲存為程式碼的能力。

  • 快速且精確地重新建立容器映像,以供維護和升級之用。

  • 容器映像與開發週期之間的持續整合。

注意

Moby 和容器化不包含原生映像建置解決方案。 或者,您可以使用容器映像建置服務,例如 Azure Container Registry (ACR) 工作。

驅動此自動化的 Docker 元件是 Dockerfile 文字檔和 docker build 命令:

  • Dockerfile 文字檔包含建立新容器映像所需的指令。 這些指令包含用來作為基礎的現有映像識別碼、在映像建立流程中執行的命令,以及部署容器映像新執行個體時所執行的命令。

  • Docker build 命令會取用 Dockerfile,然後觸發映像建立流程。

使用 CLI 管理容器

使用下列命令來建立和管理您的容器及容器映像:

  • Docker image 命令會列出容器主機上可用的映像。 這樣做的其中一個原因是,使用現有的容器映像作為新容器的基礎:
docker images
  • Docker run 命令會使用容器映像來建立容器。 例如,下列命令會建立以 Windows Server Core 容器映像為基礎的容器。 請勿在命令中指定隔離模式,因此 Docker 將使用預設的隔離模式,也就是流程隔離。 --name 參數會用於將名稱設定為容器。 -it 會用於和容器進行互動式工作階段 (和執行中斷連結的 -d 相反),而 PowerShell 指令則會開啟 PowerShell 工作階段:
docker run --name IIS -it mcr.microsoft.com/windows/servercore:ltsc2022 powershell
  • Docker commit 命令會將您對容器所做的變更認可至新的容器映像。 認可作業不包括在容器內掛接的磁碟區中包含的資料。 根據預設,在建立新的容器映像時,容器會暫停:(請謹記,不建議將此選項作為建立新容器映像的最佳做法)
docker commit
  • Docker stop 命令會停止執行中的容器:
docker stop <container name or ID>
  • Docker rm 命令會移除一或多個容器:
docker rm <container name or ID>

示範

下列影片示範如何:

  • Windows Server 上安裝 Docker CE/Moby

  • 提取容器映像,並以互動方式執行新的容器。

  • 部署 IIS 容器執行個體,並在瀏覽器上驗證網頁。

此程序的主要步驟如下:

  1. Windows Server 上安裝 Docker CE/Moby

  2. 下載包含 Internet Information Services (IIS) 的 Windows Server Core 映像。 由於容器基礎映像版本必須和主機的版本相符,所以請使用 iis:windowsservercore-ltsc2022 容器。

  3. 使用這些參數來執行下列 Docker 命令:

    • 使用 -d 參數,以背景服務的形式執行下載的容器。

    • 設定網路功能,讓容器主機的連接埠 80 對應到容器的連接埠 80

Docker run -d -p 80:80 mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022
  1. 使用下列命令來取得容器識別碼:
docker ps
  1. 使用下列命令來停止容器:
docker stop <container ID>

快速檢閱