練習 - 將 Docker 映像部署至 Azure 容器執行個體

已完成

Azure 容器執行個體可讓您在 Azure 中執行 Docker 映像。

在上一個練習中,您已將 Web 應用程式封裝為本機 Docker 映像並加以測試。 現在,您想要使用該練習的輸出,並讓 Web 應用程式可供全域使用。 為了實現此可用性,您必須以 Azure 容器執行個體的形式執行映像。

在本練習中,您會了解如何重建 Web 應用程式的映像,並將其上傳至 Azure Container Registry。 您會使用 Azure 容器執行個體服務執行此映像。

重要

您必須有自己的 Azure 訂用帳戶才能執行本練習,且可能會產生費用。 如果您還沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

建立容器登錄

  1. 使用您的 Azure 訂用帳戶登入 Azure 入口網站

  2. 在資源功能表或 [首頁] 頁面,選取 [建立資源]。 [建立資源] 窗格隨即會顯示。

  3. 在功能表中,選取 [容器],然後選取 [容器登錄].

    Screenshot that shows Create a resource with Container Registry.

    [建立容器登錄] 窗格隨即出現。

  4. 在 [基本] 索引標籤上,為每個設定輸入下列值。

    設定
    專案詳細資料
    訂用帳戶 選取您可以在其中建立和管理資源的 Azure 訂用帳戶。
    資源群組 選取 [建立] 名稱為 learn-deploy-container-aci-rg 的新資源群組。 記住您選取的名稱;您會在本課程模組的其餘練習中用到。 此外,當您完成本課程模組時,請記得清除此資源。
    [執行個體詳細資料]
    登錄名稱 輸入您選擇的名稱。 登錄名稱在 Azure 內必須是唯一的,且包含 5-50 個英數字元。
    位置 選擇接近您的位置。
    SKU 標準
  5. 選取 [檢閱 + 建立]。 當 [通過驗證] 通知出現時,請選取 [建立]。 請等容器登錄部署後,再繼續操作。

  6. 選取 [前往資源] 。 [容器登錄] 窗格會顯示容器登錄的基本資訊。

  7. 在資源功能表的 [設定] 底下,選取 [存取金鑰]。 容器登錄的 [存取金鑰] 窗格隨即出現。

  8. 如果 [管理使用者] 設定已停用,請選取滑杆以啟用 [管理使用者] 存取金鑰。 容器登錄的 [使用者名稱] 和密碼隨即出現。

  9. 請記下容器登錄的登錄名稱登入伺服器使用者名稱密碼

    注意

    在此練習中,我們會啟用系統管理員帳戶存取權,以便能夠上傳映像並測試登錄。 在生產環境中,請務必停用 [管理使用者] 帳戶存取權,並在滿意登錄的運作符合預期時立即使用 Microsoft Entra ID Protection。

    Screenshot of the Access keys details.

將旅館訂房系統應用程式的映像上傳至 Azure Container Registry

  1. 在本機的命令提示字元中執行下列命令,並將 <registry-name> 取代為容器登錄的名稱,以便為目前的 reservationsystem 映像加上登錄名稱標籤:

    docker tag reservationsystem:latest <registry-name>.azurecr.io/reservationsystem:latest
    
  2. 執行 docker image ls 命令,驗證是否已正確標記映像:

    docker image ls
    

    您應該會看到類似下面的輸出:

    REPOSITORY                                    TAG                 IMAGE ID            CREATED             SIZE
    reservationsystem                             latest              a56281e7038f        4 minutes ago       1.76GB
    <registry-name>.azurecr.io/reservationsystem  latest              a56281e7038f        4 minutes ago       1.76GB
    
  3. 在命令提示字元中,登入您的 Azure Container Registry。 使用 docker login 命令,指定您先前記下的登錄登入伺服器。 出現提示時,從存取金鑰輸入使用者名稱和密碼。

    docker login <login-server>
    

    注意

    您可能會收到精靈傳來的錯誤回應,內容指出您的應用程式未向 Microsoft Entra ID 註冊。 如本練習稍早所述,您已啟用 [管理使用者] 存取金鑰來測試我們的部署。

  4. 輸入下列命令,並將 <registry-name> 取代為您自己的登錄名稱,以在 Azure Container Registry 中將映像上傳至您的登錄:

    docker push <registry-name>.azurecr.io/reservationsystem:latest
    

    等候上傳完成。 此流程需要幾分鐘的時間,才能將映像的所有物件推送至您的存放庫。 您可以觀察每個物件從等候中準備中推送中進展到已推送的過程。

驗證登錄的內容

為了進行此練習的其餘部分,您會返回 Azure 入口網站。

  1. 在 Azure 入口網站中,返回您的容器登錄。

  2. 在資源功能表中,於 [服務] 底下,選取 [存放庫]。 容器登錄的 [存放庫] 窗格隨即顯示。

  3. 驗證 reservationsystem 存放庫是否出現。 選取 reservationsystem 存放庫,驗證此存放庫是否包含標記為 latest 的映像。

    Screenshot showing the repository and tagged reservation system container image in the registry.

使用 Azure 容器執行個體載入並執行映像

  1. 在 Azure 入口網站中,選取 [建立資源]。 [建立資源] 窗格隨即會顯示。

  2. 在資源功能表中,選取 [容器],然後選取 [容器執行個體]

    Screenshot showing Container Instances.

    [建立容器執行個體] 窗格隨即顯示。

    設定容器執行個體需要進行數個步驟。 請從設定資源群組資訊和容器詳細資料來開始。 接著,設定容器的網路選項並重新啟動原則。

  3. 在 [基本] 索引標籤上,為每個設定輸入下列值。

    設定
    專案詳細資料
    訂用帳戶 選取您可以在其中建立和管理資源的預設 Azure 訂用帳戶
    資源群組 重複使用現有資源群組 learn-deploy-container-aci-rg
    容器詳細資料
    容器名稱 hotelsysteminstance
    區域 使用預設位置
    影像來源 Docker Hub 或其他登錄
    影像類型 私用
    映像 <registry-name>.azurecr.io/reservationsystem:latest
    映像登錄登入伺服器 輸入登錄的登入伺服器名稱
    映像登錄使用者名稱 輸入登錄的使用者名稱
    映像登錄密碼 輸入登錄的密碼
    OS 類型 Linux
    大小 將預設 [大小] 維持設定為 1 vcpu、1.5 GiB 記憶體、0 gpus
  4. 選取 [下一步:網路]

  5. 在 [網路] 索引標籤中,為每個設定輸入下列值。

    設定
    網路類型 公開
    DNS 名稱標籤 選擇唯一名稱,以作為容器 URL 的一部分。
    連接埠
    連接埠 80
    連接埠通訊協定 TCP
  6. 選取 [下一步: 進階]

  7. 在 [進階] 索引標籤上,為每個設定輸入下列值。

    設定
    重新啟動原則 永遠
    環境變數 將所有設定保留空白
    命令覆寫 保留空白
  8. 選取 [檢閱 + 建立]。 等候驗證完成,如有必要則更正任何錯誤。

  9. 選取建立

  10. 在建立資源之後,選取 [前往資源]。 您的 [容器實例] 窗格隨即出現。

  11. 在 [概觀] 窗格上,尋找容器執行個體的完整網域名稱 (FQDN)。

    Screenshot that shows the New pane in Azure portal showing the Container properties with the FQDN highlighted.

  12. 使用網頁瀏覽器,瀏覽至 URL http://FQDN/api/reservations/1,並將 FQDN 取代為容器執行個體的完整網域名稱。 例如,在上述螢幕擷取畫面中使用可見的 FQDN 會看起來像這樣:

    http://hotel.southcentralus.azurecontainer.io/api/reservations/1
    

    Web 應用程式應該會回應包含 reservation 1 詳細資料的 JSON 物件。

恭喜! 您已將 Docker 映像上傳至 Azure Container Registry,並使用 Azure 容器執行個體服務執行此映像。