教程:在 Linux Service Fabric 群集上创建容器映像

本教程是演示如何在 Linux Service Fabric 群集中使用容器的教程系列的第 1 部分。 本教程中准备了一个要用于 Service Fabric 的多容器应用程序。 在后续教程中,这些映像用作 Service Fabric 应用程序的一部分。 本教程介绍如何执行下列操作:

  • 克隆 GitHub 中的应用程序源
  • 根据应用程序源创建容器映像
  • 部署 Azure 容器注册表 (ACR) 实例
  • 标记 ACR 的容器映像
  • 向 ACR 上传映像

此教程系列介绍了如何:

  • 创建 Service Fabric 的容器映像

必备条件

  • 设置 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 .

注意

如果你的权限被拒绝,请按照文档操作,了解如何在没有 sudo 的情况下使用 docker。

此命令可能需要一些时间,因为需要从 Docker 中心拉取所有必需的依赖项。 完成后,请使用 docker images 命令查看刚创建的 azure-vote-front 映像。

docker images

部署 Azure 容器注册表

首先,运行 az login 命令,登录 Azure 帐户。

az cloud set -n AzureChinaCloud
az login
# az cloud set -n AzureCloud   //means return to Public Azure.

接下来,使用 az account 命令来选择订阅,创建 Azure 容器注册表。 必须输入你的 Azure 订阅的订阅 ID 来代替 <subscription_id>。

az account set --subscription <subscription_id>

在部署 Azure 容器注册表时,首先需要一个资源组。 Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。

使用“az group create”命令创建资源组。 本示例在 chinanorth 区域中创建名为 myResourceGroup 的资源组。

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

使用 az acr create 命令创建 Azure 容器注册表。 将 <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.cn

现在,使用容器注册表的 loginServer 标记 azure-vote-front 映像 。 另外,将 :v1 添加至映像名称的末端。 此标记代表映像版本。

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

标记后即可运行“docker images”验证操作。

输出:

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

将映像推送到注册表

将 azure-vote-front 映像推送到注册表。

使用以下示例,将 ACR loginServer 名称替换为环境中的 loginServer。

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

docker push 命令需要几分钟才能完成。

列出注册表中的映像

若要返回已推送到 Azure 容器注册表的映像列表,请运行 az acr repository list 命令。 使用 ACR 实例名称更新命令。

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

输出:

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

完成本教程后,容器映像已存储在专用 Azure 容器注册表实例中。 后续教程会将此映像从 ACR 部署到 Service Fabric 群集。