向 Azure 容器注册表推送容器映像

已完成

在本单元中,你将使用 Azure 容器注册表服务将容器映像推送到 Azure 容器注册表。 使用 Azure 容器注册表,可以针对所有类型的容器部署在专用注册表中生成、存储和管理容器映像和项目。 将 Azure 容器注册表用于现有的容器开发和部署管道。

注释

如果会话已空闲,或者正在另一时间点或从另一个 CLI 执行此步骤,则可能需要使用以下命令重新初始化环境变量并重新进行身份验证:

还原安装程序中使用的资源变量值。 将下面的 <your-subscription-ID> 替换为你用于此模块的订阅 ID。 如果登录提供订阅选择器,请选择同一订阅。 一次运行一个身份验证命令。 在 az account show 之后,确认当前订阅与设置匹配,然后再继续。 如果命令失败,请停止并解决错误。

export AZ_RESOURCE_GROUP=java-containerization-demo-rg
export AZ_CONTAINER_REGISTRY=<your-container-registry>
export AZ_KUBERNETES_CLUSTER=java-containerization-demo-aks
export AZ_LOCATION=<your-Azure-region>
export AZ_KUBERNETES_CLUSTER_DNS_PREFIX=<your-unique-DNS-prefix-to-access-your-AKS-cluster>
az login
az account set --subscription "<your-subscription-ID>"
az account show --output table
az acr login --name "$AZ_CONTAINER_REGISTRY"

推送容器映像

可以将新生成的容器映像推送到 Azure 容器注册表。 这样,你的容器映像与你所有的 Azure 资源(例如 Azure Kubernetes 服务 [AKS] 群集)密切相关。 稍后,将 AKS 配置为从注册表拉取 flightbookingsystemsample 映像。 若要将容器映像推送到注册表,请执行以下步骤:

  1. 使用以下命令登录到 Azure 容器注册表(如果尚未登录):

    az acr login
    
  2. 在标记或推送之前检查实际的本地映像:

    docker image inspect flightbookingsystemsample:latest \
      --format '{{.Os}}/{{.Architecture}}'
    

    对于此路径,结果必须为 linux/amd64. 如果不同,请按照上一单元中所述,使用 --platform linux/amd64 重新构建并运行映像,然后再继续。 标记和推送保留映像平台;它们不会更改其体系结构。

  3. 使用以下命令使用 Azure 容器注册表标记以前生成的容器映像:

    docker tag flightbookingsystemsample $AZ_CONTAINER_REGISTRY.azurecr.io/flightbookingsystemsample
    
  4. 使用以下命令将容器映像推送到 Azure 容器注册表:

    docker push $AZ_CONTAINER_REGISTRY.azurecr.io/flightbookingsystemsample
    
  5. 推送完成后,可以使用以下命令查看新推送映像的 Azure 容器注册表映像元数据:

    az acr repository show \
        --name $AZ_CONTAINER_REGISTRY \
        --image flightbookingsystemsample:latest
    

以下历史元数据仅作示例。 生成并推送更新后的映像后,映像摘要和时间戳可能会有所不同:

{
  "changeableAttributes": {
    "deleteEnabled": true,
    "listEnabled": true,
    "readEnabled": true,
    "writeEnabled": true
  },
  "createdTime": "2024-11-15T12:23:55.5624474Z",
  "digest": "sha256:13851640a3****************************************f7f1e482c6eaa825",
  "lastUpdateTime": "2024-11-15T12:23:55.5624474Z",
  "name": "latest",
  "signed": false
}

容器映像现在位于 Azure 容器注册表中,可供 Azure 服务(如 AKS)进行部署。