準備要部署容器的 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 容器執行個體,並在瀏覽器上驗證網頁。
此程序的主要步驟如下:
在 Windows Server 上安裝 Docker CE/Moby。
下載包含 Internet Information Services (IIS) 的 Windows Server Core 映像。 由於容器基礎映像版本必須和主機的版本相符,所以請使用 iis:windowsservercore-ltsc2022 容器。
使用這些參數來執行下列 Docker 命令:
使用 -d 參數,以背景服務的形式執行下載的容器。
設定網路功能,讓容器主機的連接埠 80 對應到容器的連接埠 80。
Docker run -d -p 80:80 mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022
- 使用下列命令來取得容器識別碼:
docker ps
- 使用下列命令來停止容器:
docker stop <container ID>
快速檢閱