教學課程:建立 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 提供可在 macOS、Windows 和 Linux 上設定 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: