快速入門:使用 Azure PowerShell 建立私人容器登錄

Azure Container Registry 是私人登錄服務,用於建置、儲存和管理容器映像和相關成品。 在本快速入門中,您會使用 Azure PowerShell 建立 Azure Container Registry 執行個體。 然後,使用 Docker 命令將容器映像推送到登錄中,最後從您的登錄中提取映像並加以執行。

必要條件

注意

建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 請參閱安裝 Azure PowerShell 以開始使用。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az

本快速入門需要 Azure PowerShell 模組。 執行 Get-Module -ListAvailable Az 來判斷您安裝的版本。 如果您需要安裝或升級,請參閱安裝 Azure PowerShell 模組

您也必須在本機上安裝 Docker。 Docker 提供 macOSWindowsLinux 系統適用的套件。

由於 Azure Cloud Shell 未包含所有必要的 Docker 元件 (dockerd 精靈),因此您無法使用本快速入門中的 Cloud Shell。

登入 Azure

使用 Connect-AzAccount 命令登入 Azure 訂用帳戶,並依照畫面上的指示操作。

Connect-AzAccount

建立資源群組

通過 Azure 的驗證後,請使用 New-AzResourceGroup 建立資源群組。 資源群組是一種邏輯容器,您可在其中部署與管理 Azure 資源。

New-AzResourceGroup -Name myResourceGroup -Location EastUS

建立容器登錄

接著,使用 New-AzContainerRegistry 命令在新的資源群組中建立容器登錄。

登錄名稱在 Azure 內必須是唯一的,且包含 5-50 個英數字元。 下列範例會建立名為「mycontainerregistry」的登錄。在下列命令中取代 mycontainerregistry,然後執行命令建立登錄:

$registry = New-AzContainerRegistry -ResourceGroupName "myResourceGroup" -Name "mycontainerregistry" -EnableAdminUser -Sku Basic

提示

您在本快速入門中會建立「基本」登錄,這是正在學習 Azure Container Registry 的開發人員所適用的成本最佳化選項。 選擇其他層級來增加儲存體和映像輸送量,以及使用私人端點進行連線等功能。 如需可用服務層級 (SKU) 的詳細資訊,請參閱容器登錄服務層

登入登錄

推送和提取容器映像之前,您必須先使用 Connect-AzContainerRegistry Cmdlet 來登入登錄。 下列範例會使用認證,而認證與您使用 Connect-AzAccount Cmdlet 向 Azure 進行驗證時用來登入的認證相同。

注意

在下列範例中,$registry.Name 的值是資源名稱,而不是完整登錄名稱。

Connect-AzContainerRegistry -Name $registry.Name

完成後,此命令會傳回 Login Succeeded

將映像推送至登錄

若要推送映像到 Azure Container Registry,您必須先有映像。 如果您還沒有任何本機容器映像,請執行下列 docker pull 命令提取現有的公用映像。 針對此範例,從 Microsoft Container Registry 提取 hello-world 映像。

docker pull mcr.microsoft.com/hello-world

您必須使用登錄登入伺服器的完整名稱來標記映像,才能將映像推送至您的容器登錄。 登入伺服器名稱的格式為 <registry-name>.azurecr.io (必須全部小寫),例如 mycontainerregistry.azurecr.io

使用 docker tag 命令來標記映像。 以 ACR 執行個體的登入伺服器名稱取代 <login-server>

docker tag mcr.microsoft.com/hello-world <login-server>/hello-world:v1

範例:

docker tag mcr.microsoft.com/hello-world mycontainerregistry.azurecr.io/hello-world:v1

最後,使用 docker push 將映像推送到登錄執行個體。 將 <login-server> 取代為登錄執行個體的登入伺服器名稱。 此範例會建立 hello-world 存放庫,其中包含 hello-world:v1 映像。

docker push <login-server>/hello-world:v1

將映像推送到您的容器登錄之後,請從您的本機 Docker 環境中移除 hello-world:v1 映像。 (請注意,此 docker rmi 命令並不會從 Azure 容器登錄中的 hello-world 存放區移除映像。)

docker rmi <login-server>/hello-world:v1

從登錄執行映像

現在,您可以使用 docker run 從您的容器登錄中提取 hello-world:v1 容器映像並加以執行:

docker run <login-server>/hello-world:v1  

範例輸出︰

Unable to find image 'mycontainerregistry.azurecr.io/hello-world:v1' locally
v1: Pulling from hello-world
Digest: sha256:662dd8e65ef7ccf13f417962c2f77567d3b132f12c95909de6c85ac3c326a345
Status: Downloaded newer image for mycontainerregistry.azurecr.io/hello-world:v1

Hello from Docker!
This message shows that your installation appears to be working correctly.

[...]

清除資源

當您使用在本快速入門中建立的資源完成工作後,請使用 Remove-AzResourceGroup 命令移除資源群組、容器登錄,以及儲存於該處的容器映像:

Remove-AzResourceGroup -Name myResourceGroup

下一步

在本快速入門中,您已使用 Azure PowerShell 建立 Azure Container Registry、推送容器映像,以及從登錄中提取映像並加以執行。 請繼續進行 Azure 容器登錄教學課程,以深入了解 ACR。