用于订阅的容器的Azure Web App中的Azure容器注册表中的Azure容器注册表

时间:2020-01-21 23:51:09

标签: azure docker azure-container-registry azure-web-app-for-containers

我目前正在尝试为容器设置一个Azure Web应用程序,将其链接到另一个订阅中的Azure容器注册表。这就是为什么我最初的想法是使用Web应用程序Private Registry中的Container Settings标签来输入所述注册表的凭据。

但是,当我保存并重新加载页面时,现在会填充Azure Container Registry标签的设置,而Private Registry标签为空。问题是,我现在得到以下错误:

2020-01-21 21:51:12.951 ERROR - DockerApiException: Docker API responded with status code=NotFound, response={"message":"pull access denied for cliswebapi, repository does not exist or may require 'docker login': denied: requested access to the resource is denied"}

我认为是因为未存储密码。如何正确配置?

2 个答案:

答案 0 :(得分:2)

使用私有注册表时,Azure容器注册表也是私有注册表,并且部署到Web应用程序容器,您需要在此处设置环境变量:

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

If you're using Azure Container Registry, you need to set some app settings中查看更多详细信息。

如果创建多个容器,则所有映像必须位于同一注册表中。全部在Docker Hub或Azure容器注册表中。在All images must use the same registry中查看更多详细信息。

更新

显示一条消息,提示您使用ACR中的映像以其他订阅方式部署Web App。看来这是Web应用程序中的错误,您可以在Github中看到issue。建议是,也许您可​​以使用ACR的服务主体进行身份验证并执行步骤here

答案 1 :(得分:1)

我在这个问题上花了一些时间并弄清楚了。这是我的解决方案:

假设我们有两个订阅,我们称它们为 SUB-ASUB-B,我们在 SUB-A 中有一个 Azure 容器注册表(在我的示例中称为 azurebluedev) .

现在我们想在 SUB-B 中创建一个应用服务,它使用管理员用户名来提取容器注册表的映像。

在创建应用服务时,在 docker 刀片中的 Image and tag 下使用正确的格式至关重要。它必须遵循 url/image:tag 格式(不带 https),否则您将遇到所描述的问题。我事先使用了 image:tag 格式,但没有用。

enter image description here

这对我有用!