分享方式:


教學課程:建立 Azure Container Registry 並推送容器映像

這是三段式教學課程的第二段。 本教學課程的第一部分已建立 Node.js Web 應用程式的 Docker 容器映像。 在本教學課程中,您會將此映像推送至 Azure Container Registry。 如果您尚未建立容器映像,請回到教學課程 1 – 建立容器映像

Azure Container Registry 是 Azure 中的私人 Docker 登錄。 在本教學課程 (系列的第二部分) 中,您會:

  • 使用 Azure CLI 建立 Azure Container Registry 執行個體
  • 標記 Azure Container Registry 的容器映像
  • 將映像上傳至您的登錄

在下一篇文章 (本系列的最後一部分) 中,您會從私人登錄將容器部署至 Azure Container Instances。

開始之前

您必須滿足下列需求,才能完成本教學課程:

Azure CLI:您必須在本機電腦上安裝 Azure CLI 2.0.29 版或更新版本。 執行 az --version 以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI 模組

Docker:本教學課程假設使用者對核心 Docker 概念有基本認識,像是容器、容器映像和基本 docker 命令。 如需 Docker 和容器基本概念的入門,請參閱 Docker 概觀 \(英文\)。

Docker: 若要完成本教學課程,您需要在本機安裝 Docker。 Docker 提供可在 macOSWindowsLinux 上設定 Docker 環境的套件。

重要

因為 Azure Cloud shell 不包含 Docker 精靈,所以您「必須」在「本機電腦」上安裝 Azure CLI 和 Docker 引擎,才能完成本教學課程。 您無法在此教學課程中使用 Azure Cloud Shell。

建立 Azure Container Registry

建立容器登錄之前,您需要「資源群組」才能部署它。 資源群組是在其中部署及管理所有 Azure 資源的邏輯集合。

使用 az group create 命令來建立資源群組。 在下列範例中,會在 eastus 區域中建立名為 myResourceGroup 的資源群組:

az group create --name myResourceGroup --location eastus

建立資源群組後,請使用 az acr create 命令建立 Azure Container Registry。 容器登錄名稱在 Azure 內必須是唯一的,且必須包含 5-50 個英數字元。 以登錄的唯一名稱取代 <acrName>

az acr create --resource-group myResourceGroup --name <acrName> --sku Basic

以下是名為 mycontainerregistry082 的新 Azure Container Registry 輸出:

{
  "creationDate": "2020-07-16T21:54:47.297875+00:00",
  "id": "/subscriptions/<Subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/mycontainerregistry082",
  "location": "eastus",
  "loginServer": "mycontainerregistry082.azurecr.io",
  "name": "mycontainerregistry082",
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "sku": {
    "name": "Basic",
    "tier": "Basic"
  },
  "status": null,
  "storageAccount": null,
  "tags": {},
  "type": "Microsoft.ContainerRegistry/registries"
}

本教學課程的其餘部分將 <acrName> 視為您在此步驟中所選容器登錄名稱的預留位置。

登入容器登錄

您必須先登入 Azure Container Registry 執行個體,才能將映像推送給它。 使用 az acr login 命令來完成此作業。 您必須提供在建立容器登錄時提供的唯一名稱。

az acr login --name <acrName>

例如:

az acr login --name mycontainerregistry082

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

Login Succeeded

標記容器映像

若要將容器映像推送到私人登錄 (像是 Azure Container Registry),您必須為此映像標記登錄的登入伺服器完整名稱。

首先,取得 Azure Container Registry 的完整登入伺服器名稱。 執行下列 az acr show 命令,並以您剛建立的登錄名稱取代 <acrName>

az acr show --name <acrName> --query loginServer --output table

例如,如果您的登錄名稱為 mycontainerregistry082

az acr show --name mycontainerregistry082 --query loginServer --output table
Result
------------------------
mycontainerregistry082.azurecr.io

現在,使用 docker images 命令顯示您的本機映像清單:

docker images

除了電腦上的任何其他映像,您應會看到在上一個教學課程中建立的 aci-tutorial-app 映像:

docker images
REPOSITORY          TAG       IMAGE ID        CREATED           SIZE
aci-tutorial-app    latest    5c745774dfa9    39 minutes ago    68.1 MB

以您容器登錄的登入伺服器標記 aci-tutorial-app映像。 此外,將 :v1 標記新增至映像名稱尾端以表示映像版本號碼。 以您稍早執行 az acr show 命令的結果取代 <acrLoginServer>

docker tag aci-tutorial-app <acrLoginServer>/aci-tutorial-app:v1

再次執行 docker images 來驗證標記作業:

docker images
REPOSITORY                                            TAG       IMAGE ID        CREATED           SIZE
aci-tutorial-app                                      latest    5c745774dfa9    39 minutes ago    68.1 MB
mycontainerregistry082.azurecr.io/aci-tutorial-app    v1        5c745774dfa9    7 minutes ago     68.1 MB

將映像推送至 Azure Container Registry

您已使用私人登錄的完整登入伺服器名稱標記 aci-tutorial-app 映像,接下來您可以使用 docker push 命令將映像推送至登錄。 以您在稍早步驟中取得的完整登入伺服器名稱取代 <acrLoginServer>

docker push <acrLoginServer>/aci-tutorial-app:v1

視您的網際網路連線而定,push 作業應該會花費幾秒鐘到幾分鐘的時間,且輸出會與以下類似:

docker push mycontainerregistry082.azurecr.io/aci-tutorial-app:v1
The push refers to a repository [mycontainerregistry082.azurecr.io/aci-tutorial-app]
3db9cac20d49: Pushed
13f653351004: Pushed
4cd158165f4d: Pushed
d8fbd47558a8: Pushed
44ab46125c35: Pushed
5bef08742407: Pushed
v1: digest: sha256:ed67fff971da47175856505585dcd92d1270c3b37543e8afd46014d328f05715 size: 1576

在 Azure Container Registry 中列出映像

若要確認剛推送的映像確實在您的 Azure Container Registry 中,請使用 az acr repository list 命令列出您登錄中的映像。 以您的容器登錄名稱取代 <acrName>

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

例如:

az acr repository list --name mycontainerregistry082 --output table
Result
----------------
aci-tutorial-app

若要查看特定映像的「標籤」,請使用 az acr repository show-tags 命令。

az acr repository show-tags --name <acrName> --repository aci-tutorial-app --output table

您應該會看到如下輸出:

--------
v1

下一步

在本教學課程中,您準備了 Azure Container Registry 與 Azure Container Instances 搭配使用,並已將容器映像推送至登錄。 已完成下列步驟:

  • 使用 Azure CLI 建立 Azure Container Registry 執行個體
  • 標記 Azure Container Registry 的容器映像
  • 將映像上傳至 Azure Container Registry

進入下一個教學課程,了解如何使用 Azure Container Instances 將容器部署至 Azure: