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

Azure Web App中的Azure容器注册表,用于跨订阅的容器,azure,docker,azure-container-registry,azure-web-app-for-containers,Azure,Docker,Azure Container Registry,Azure Web App For Containers,我目前正在尝试为容器设置Azure Web应用程序,将其链接到位于不同订阅中的Azure容器注册表。这就是为什么我最初的想法是使用Web应用程序容器设置中的私有注册表选项卡来输入所述注册表的凭据 但是,当我保存并重新加载页面时,Azure容器注册表选项卡的设置现在已填充,Private注册表选项卡为空。问题是,我现在得到以下错误: 2020-01-21 21:51:12.951错误-DockerAPI异常:Docker API响应状态代码=NotFound,响应={“message”:“clis

我目前正在尝试为容器设置Azure Web应用程序,将其链接到位于不同订阅中的Azure容器注册表。这就是为什么我最初的想法是使用Web应用程序
容器设置
中的
私有注册表
选项卡来输入所述注册表的凭据

但是,当我保存并重新加载页面时,
Azure容器注册表
选项卡的设置现在已填充,
Private注册表
选项卡为空。问题是,我现在得到以下错误:

2020-01-21 21:51:12.951错误-DockerAPI异常:Docker API响应状态代码=NotFound,响应={“message”:“cliswebapi的拉取访问被拒绝,存储库不存在或可能需要“Docker登录”:被拒绝:请求的资源访问被拒绝”}


我想是因为没有存储密码。如何正确配置此功能?

当您使用专用注册表时,Azure容器注册表也是专用注册表,并部署到Web App for Containers,您需要在此处设置环境变量:

  • DOCKER\u REGISTRY\u SERVER\u用户名-ACR服务器的用户名
  • DOCKER\u REGISTRY\u SERVER\u URL-指向ACR服务器的完整URL。(例如,)
  • DOCKER\u注册表\u服务器\u密码-ACR服务器的密码
请参阅中的更多详细信息

如果创建多个容器,则所有图像必须位于同一注册表中。全部位于Docker Hub或Azure容器注册表中。请参阅中的更多详细信息

更新:


显示消息,说明您在不同订阅中使用ACR中的映像部署Web应用程序。这似乎是Web应用程序中的一个bug,您可以在Github中看到。建议您可以使用ACR的服务主体进行身份验证和步骤。

我花了一些时间来解决这个问题并解决了它。以下是我的解决方案:

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

现在,我们想在
SUB-B
中创建一个应用程序服务,通过使用管理员用户名提取容器注册表的图像

创建应用程序服务时,在docker blade中的
图像和标签下使用正确的格式至关重要。它必须遵循格式
url/image:tag
(不带https),否则您将遇到上述问题。我之前使用的是
image:tag
格式,但不起作用


这对我有用

当我通过Private Registry选项卡输入这些值时,这些值似乎会自动填充。尽管如此,还是会出现同样的错误。除了启用管理员用户,我还需要在容器注册表上执行任何操作吗?@Thomas如果不启用管理员用户,您是否使用服务主体进行身份验证?您是否在门户中部署了它?@Thomas Id您没有使用服务主体,我会说是的,您需要启用管理员用户为Web应用提供用户名和密码。我没有使用服务主体,并且启用了管理员,但仍然看到此问题。@Thomas不确定,但这似乎是GitHub中的一个错误。也许您可以使用服务主体进行身份验证,步骤如下。