教學課程:在 Linux Service Fabric 叢集上建立容器映像

本教學課程是一個教學課程系列的第一部分,示範如何在 Linux Service Fabric 叢集中使用容器。 在本教學課程中,多容器應用程式已準備好可與 Service Fabric 搭配使用。 在後續的教學課程中,這些映像可用來作為 Service Fabric 應用程式的一部分。 在本教學課程中,您將了解如何:

  • 從 GitHub 複製應用程式來源
  • 從應用程式來源建立容器映像
  • 部署 Azure Container Registry (ACR) 執行個體
  • 標記 ACR 的容器映像
  • 將映像上傳至 ACR

在本教學課程系列中,您將了解如何:

必要條件

  • 已針對 Service Fabric 設定的 Linux 開發環境。 請依照這裡的指示來設定 Linux 環境。
  • 本教學課程需要您執行 Azure CLI 2.0.4 版或更新版本。 執行 az --version 以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI 模組
  • 此外,它需要您具有可用的 Azure 訂用帳戶。 如需免費試用版的詳細資訊,請移至這裡

取得應用程式程式碼

本教學課程中使用的範例應用程式是投票應用程式。 應用程式是由前端 Web 元件和後端 Redis 執行個體所組成。 元件已封裝為容器映像。

使用 git 將應用程式的複本下載至您的開發環境。

git clone https://github.com/Azure-Samples/service-fabric-containers.git

cd service-fabric-containers/Linux/container-tutorial/

方案包含兩個資料夾和 'docker-compose.yml' 檔案。 'azure-vote' 資料夾包含 Python 前端服務,以及用來建置映像的 Dockerfile。 'Voting' 目錄包含部署至叢集的 Service Fabric 應用程式封裝。 這些目錄包含本教學課程所需的資產。

建立容器映像

azure-vote 目錄內,執行下列命令以建置前端 Web 元件的映像。 此命令會使用此目錄中的 Dockerfile 來建置映像。

docker build -t azure-vote-front .

注意

如果您遇到權限遭拒的狀況,請依照這份文件的說明使用 Docker,而不使用 sudo。

此命令可能需要一些時間,因為必須從 Docker Hub 提取所有必要的相依性。 完成時,請使用 docker images 命令來查看您剛才建立的 azure 投票正面 映射。

docker images

部署 Azure Container Registry

先執行 az login 命令來登入您的 Azure 帳戶。

az login

接下來,使用 az account 命令,選擇您的訂用帳戶來建立 Azure 容器登錄。 您必須輸入您 Azure 訂用帳戶的訂用帳戶識別碼來取代 <subscription_id>。

az account set --subscription <subscription_id>

部署 Azure Container Registry 時,您必須先有資源群組。 Azure 資源群組是在其中部署與管理 Azure 資源的邏輯容器。

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

az group create --name <myResourceGroup> --location westus

使用 az acr create 命令來建立 Azure Container Registry。 使用您想要在訂用帳戶下建立的容器登錄名稱取代 <acrName>。 此名稱必須是英數字元,而且是唯一的。

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

在本教學課程的其餘部分,我們使用 "acrName" 作為您選擇之容器登錄名稱的預留位置。 請記住這個值。

登入您的容器登錄

請登入您的 ACR 執行個體,再將映像推送到該執行個體。 使用 az acr login 命令來完成此作業。 在建立容器登錄時,為它提供唯一名稱。

az acr login --name <acrName>

此命令在完成之後會傳回「登入成功」訊息。

標記容器映像

每個容器映像都必須標記登錄的 loginServer 名稱。 此標籤用於將容器映像推送至映像登錄時的路由傳送。

若要查看目前的映像清單,請使用 docker images 命令。

docker images

輸出:

REPOSITORY                   TAG                 IMAGE ID            CREATED              SIZE
azure-vote-front             latest              052c549a75bf        About a minute ago   913MB

若要取得 loginServer 名稱,請執行下列命令:

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

這會輸出如下列結果的表格。 此結果將會用來標記您的 azure-vote-front 映像,然後才將映像推送到下一個步驟中的容器登錄。

Result
------------------
<acrName>.azurecr.io

現在,以您容器登錄的 loginServer 標記 azure-vote-front 映像。 此外,將 :v1 新增至映像名稱的結尾。 此標籤指示映像版本。

docker tag azure-vote-front <acrName>.azurecr.io/azure-vote-front:v1

標記之後,執行 'docker images' 來驗證作業。

輸出:

REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE
azure-vote-front                       latest              052c549a75bf        23 minutes ago      913MB
<acrName>.azurecr.io/azure-vote-front  v1                  052c549a75bf        23 minutes ago      913MB

將映像推送到登錄

azure-vote-front 映像推送到登錄。

使用下列範例,以您環境中的 loginServer 取代 ACR loginServer 名稱。

docker push <acrName>.azurecr.io/azure-vote-front:v1

Docker push 命令需要數分鐘才能完成。

列出登錄中的映像

若要傳回已推送至 Azure Container Registry 的映像清單,請使用 az acr repository list 命令。 以 ACR 執行個體名稱更新命令。

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

輸出:

Result
----------------
azure-vote-front

當教學課程完成時,私人 Azure Container Registry 執行個體中已儲存容器映像。 在後續的教學課程中,會將此映像從 ACR 部署到 Service Fabric 叢集。

下一步

本教學課程會從 GitHub 提取應用程式,然後建立容器映像並推送到登錄。 已完成下列步驟:

  • 從 GitHub 複製應用程式來源
  • 從應用程式來源建立容器映像
  • 部署 Azure Container Registry (ACR) 執行個體
  • 標記 ACR 的容器映像
  • 將映像上傳至 ACR

前進到下一個教學課程,以了解如何使用 Yeoman,將容器封裝到 Service Fabric 應用程式。