【问题标题】:Cannot pull image in WebApp from ACR with private endpoint enabled无法从启用了私有端点的 ACR 中提取 WebApp 中的图像
【发布时间】:2021-09-10 13:11:45
【问题描述】:

我有一个 azure webapp Container 和 azure container registry

应用程序已启动,并且可以在未启用安全性时从 acr 中提取图像(私有端点)

如果我在网络应用中启用私有端点,网络应用无法从 ACR 拉取图像

这是来自 Azure DevOps 的日志

2021-06-28T07:37:06.7931299Z Single-container Deployment to the webapp 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' as only the image detail was specified.
2021-06-28T07:37:07.0710385Z Trying to update App Service Configuration settings. Data: {"appCommandLine":null,"linuxFxVersion":"DOCKER|XXXXXXXXXXXXXXX.azurecr.io/XXXXXXXXXXXXXX:976"}
2021-06-28T07:37:14.0740862Z Updated App Service Configuration settings.
2021-06-28T07:37:14.0742609Z Restarting App Service: XXXXXXXXXXXXXXXXXXX
2021-06-28T07:37:14.3232789Z App Service 'XXXXXXXXXXXXXXXXXXXX' restarted successfully.
2021-06-28T07:37:15.3657905Z ##[warning]Error: Failed to update deployment history. Error: Ip Forbidden (CODE: 403)
2021-06-28T07:37:15.7454935Z App Service Application URL: https://XXXXXXXXXXXXXXXXXXXXXXXXXXX
2021-06-28T07:37:15.7532798Z ##[section]Finishing: Azure Web App on Container Deploy: XXXXXXXXXXXXXXXXXXXXXXXXXXXX

在 Azure 门户的日志中,Web 应用看起来将 ACR 注册表视为 Docker 中心:

2021-06-28T08:06:54.100Z INFO  - Pulling image from Docker hub: XXXXXXXXXXXXXXXXXXXXX
2021-06-28T08:06:54.201Z ERROR - DockerApiException: Docker API responded with status code=InternalServerError, response={"message":"Get https://XXXXXXXXXXXXXXXXXXXXXXXXXXX/v2/XXXXXXXXXXXXX/manifests/976: unauthorized: authentication required, visit https://aka.ms/acr/authorization for more information."}

2021-06-28T08:06:54.203Z ERROR - Image pull failed: Verify docker image configuration and credentials (if using private repository)
2021-06-28T08:06:54.205Z INFO  - Stopping site XXXXXXXXXXXXXXXXXXXXXX because it failed during startup.

这是我的 AzureDevops 步骤:

有什么办法解决这个问题吗?

【问题讨论】:

    标签: azure azure-devops azure-web-app-service azure-container-registry


    【解决方案1】:

    问题是您无权从 ACR 中提取图像。 ACR 是一个私有注册中心,因此您需要为 Web App 设置 ACR 的凭据。 Azure Web App for container 使用环境变量来设置私有注册表的凭据。 Here 是 ACR 的变量:

    • DOCKER_REGISTRY_SERVER_USERNAME - ACR 服务器的用户名。
    • DOCKER_REGISTRY_SERVER_URL - ACR 服务器的完整 URL。 (为了 例如,https://my-server.azurecr.io。)
    • DOCKER_REGISTRY_SERVER_PASSWORD - ACR 服务器的密码。

    在 DevOps 中,您可以像这样设置变量:

    【讨论】:

      猜你喜欢
      • 2018-09-05
      • 1970-01-01
      • 2017-07-05
      • 1970-01-01
      • 1970-01-01
      • 2021-04-11
      • 1970-01-01
      • 2021-10-30
      • 1970-01-01
      相关资源
      最近更新 更多