教程:在 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 群集。