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

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

進行此快速入門時,您必須執行 Azure CLI (建議使用版本 2.0.55 或更新版本)。 執行 az --version 以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI

您也必須在本機上安裝 Docker。 Docker 提供可輕鬆在任何 macOSWindowsLinux 系統上設定 Docker 的套件。

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

建立資源群組

使用 az group create 命令來建立資源群組。 Azure 資源群組是在其中部署與管理 Azure 資源的邏輯容器。

下列範例會在 eastus 位置建立名為 myResourceGroup 的資源群組。

az group create --name myResourceGroup --location eastus

建立容器登錄庫

您在本快速入門中會建立「基本」登錄,這是正在學習 Azure Container Registry 的開發人員所適用的成本最佳化選項。 如需可用服務層級的詳細資訊,請參閱容器登錄服務層

使用 az acr create 命令,以建立 ACR 執行個體。 登錄名稱在 Azure 內必須是唯一的,且包含 5-50 個小寫英數字元。 下列範例使用 mycontainerregistry。 請將此更新為唯一的值。

az acr create --resource-group myResourceGroup \
  --name mycontainerregistry --sku Basic

建立登錄時,輸出大致如下:

{
  "adminUserEnabled": false,
  "creationDate": "2019-01-08T22:32:13.175925+00:00",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/mycontainerregistry",
  "location": "eastus",
  "loginServer": "mycontainerregistry.azurecr.io",
  "name": "mycontainerregistry",
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "sku": {
    "name": "Basic",
    "tier": "Basic"
  },
  "status": null,
  "storageAccount": null,
  "tags": {},
  "type": "Microsoft.ContainerRegistry/registries"
}

請記下輸出中的 loginServer,這是完整登錄名稱 (全部小寫)。 在本快速入門的其餘部分,<registry-name> 是容器登錄名稱的預留位置,而 <login-server> 是登錄登入伺服器名稱的預留位置。

提示

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

登入登錄

推送和提取容器映像之前,您必須先登入登錄。 若要這樣做,請使用 az acr login 命令。 使用 Azure CLI 登入時僅指定登錄資源名稱。 請勿使用完整登入伺服器名稱。

az acr login --name <registry-name>

範例:

az acr login --name mycontainerregistry

完成後,此命令會傳回 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 命令來標記映像。 將 <login-server> 取代為 ACR 執行個體的登入伺服器名稱。

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

列出容器映像

下列範例會列出登錄中的存放庫:

az acr repository list --name <registry-name> --output table

輸出:

Result
----------------
hello-world

下列範例會列出在 hello-world 存放庫上的標籤。

az acr repository show-tags --name <registry-name> --repository hello-world --output table

輸出:

Result
--------
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.

[...]

清除資源

若不再需要,您可以使用 az group delete 命令移除資源群組、容器登錄,以及儲存於該處的容器映像。

az group delete --name myResourceGroup

後續步驟

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