練習:使用 Azure Container Registry 工作建置和執行容器映像
在此練習中,您會使用 ACR 工作來執行下列動作:
- 建立 Azure Container Registry (ACR)
- 從 Dockerfile 建置和推送映像
- 驗證結果
- 在 ACR 中執行映像
必要條件
- 具有有效訂用帳戶的 Azure 帳戶。 如果還沒有訂閱,則可在 https://azure.com/free 註冊免費試用版。
登入 Azure 並啟動 Cloud Shell
登入 Azure 入口網站,並開啟 Cloud Shell。
當命令介面開啟時,請選取 [Bash] 環境。
建立 Azure Container Registry
建立登錄的資源群組。 將下列命令中的
<myLocation>
取代為您附近的位置。az group create --name az204-acr-rg --location <myLocation>
建立基本容器登錄。 登錄名稱在 Azure 內必須是唯一的,且包含 5-50 個英數字元。 以不重複的值取代以下命令中的
<myContainerRegistry>
。az acr create --resource-group az204-acr-rg \ --name <myContainerRegistry> --sku Basic
注意
該命令會建立「基本」登錄,這是正在學習 Azure Container Registry 的開發人員適用的成本最佳化選項。
從 Dockerfile 建置和推送映像
現在使用 Azure Container Registry,根據本機 Dockerfile,建置和推送映像。
建立或瀏覽至本機目錄,然後使用以下命令建立 Dockerfile。 Dockerfile 會包含單行,參考裝載於 Microsoft Container Registry 的
hello-world
映像。echo FROM mcr.microsoft.com/hello-world > Dockerfile
執行會建置映像的
az acr build
命令,並在成功建置映像之後,將其推送至您的登錄。 將<myContainerRegistry>
取代為您稍早使用的名稱。az acr build --image sample/hello-world:v1 \ --registry <myContainerRegistry> \ --file Dockerfile .
以下是上一個命令輸出的簡短範例,其中顯示最後幾行與最終結果。 您可以看到
repository
欄位中列出sample/hello-word
映像。- image: registry: <myContainerRegistry>.azurecr.io repository: sample/hello-world tag: v1 digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a runtime-dependency: registry: mcr.microsoft.com repository: hello-world tag: latest digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a git: {} Run ID: cf1 was successful after 11s
驗證結果
使用
az acr repository list
命令,列出登錄中的存放庫。 將<myContainerRegistry>
取代為您稍早使用的名稱。az acr repository list --name <myContainerRegistry> --output table
輸出:
Result ---------------- sample/hello-world
使用
az acr repository show-tags
命令,列出 sample/hello-world 存放庫上的標籤。 將<myContainerRegistry>
取代為您稍早使用的名稱。az acr repository show-tags --name <myContainerRegistry> \ --repository sample/hello-world --output table
輸出:
Result -------- v1
在 ACR 中執行映像
使用
az acr run
命令,從容器登錄執行sample/hello-world:v1
容器映像。 以下範例會使用$Registry
,指定要在其中執行命令的登錄。 將<myContainerRegistry>
取代為您稍早使用的名稱。az acr run --registry <myContainerRegistry> \ --cmd '$Registry/sample/hello-world:v1' /dev/null
在此範例中的
cmd
參數會執行其預設組態中的容器,但cmd
支援其他docker run
參數甚或其他docker
命令。以下為縮點後的輸出範例:
Packing source code into tar to upload... Uploading archived source code from '/tmp/run_archive_ebf74da7fcb04683867b129e2ccad5e1.tar.gz'... Sending context (1.855 KiB) to registry: mycontainerre... Queued a run with ID: cab Waiting for an agent... 2019/03/19 19:01:53 Using acb_vol_60e9a538-b466-475f-9565-80c5b93eaa15 as the home volume 2019/03/19 19:01:53 Creating Docker network: acb_default_network, driver: 'bridge' 2019/03/19 19:01:53 Successfully set up Docker network: acb_default_network 2019/03/19 19:01:53 Setting up Docker configuration... 2019/03/19 19:01:54 Successfully set up Docker configuration 2019/03/19 19:01:54 Logging in to registry: mycontainerregistry008.azurecr.io 2019/03/19 19:01:55 Successfully logged into mycontainerregistry008.azurecr.io 2019/03/19 19:01:55 Executing step ID: acb_step_0. Working directory: '', Network: 'acb_default_network' 2019/03/19 19:01:55 Launching container with name: acb_step_0 Hello from Docker! This message shows that your installation appears to be working correctly. 2019/03/19 19:01:56 Successfully executed container: acb_step_0 2019/03/19 19:01:56 Step ID: acb_step_0 marked as successful (elapsed time in seconds: 0.843801) Run ID: cab was successful after 6s
清除資源
若不再需要,您可以使用 az group delete
命令移除資源群組、容器登錄,以及儲存於該處的容器映像。
az group delete --name az204-acr-rg --no-wait