【发布时间】:2022-01-24 17:30:58
【问题描述】:
我目前正在将 docker 容器部署到 Azure 应用服务槽。
我正在使用基于 Linux 的应用服务(应用服务计划 S1),并且容器托管在 Azure 容器注册表中。
我已经为应用服务配置了所需的 DOCKER_REGISTRY_SERVER_* 设置。
对于服务器密码,我使用的是密钥保管库参考 (@Microsoft.KeyVault(VaultName=my-vault;SecretName=my-secret))。我为应用服务槽创建了一个托管标识,并在密钥保管库中分配了 GET 秘密权限。 应用设置也表明它是一个有效的参考:
Successful key vault reference
但是,当我尝试浏览该网站时,我在日志中收到一条错误消息,指出 ACR 上的拉取请求未经授权。
2022-01-24T09:21:33.589Z INFO - Pulling image: ******.azurecr.io/******:33819
2022-01-24T09:21:33.730Z ERROR - DockerApiException: Docker API responded with status code=InternalServerError, response={"message":"Get https://******.azurecr.io/v2/******/manifests/33819: unauthorized: authentication required, visit https://aka.ms/acr/authorization for more information."}
2022-01-24T09:21:33.740Z ERROR - Pull image threw Exception: Input string was not in a correct format.
2022-01-24T09:21:33.747Z INFO - Pulling image from Docker hub: ******.azurecr.io/******:33819
2022-01-24T09:21:33.870Z ERROR - DockerApiException: Docker API responded with status code=InternalServerError, response={"message":"Get https://******.azurecr.io/v2/******/manifests/33819: unauthorized: authentication required, visit https://aka.ms/acr/authorization for more information."}
2022-01-24T09:21:33.872Z WARN - Image pull failed. Defaulting to local copy if present.
当我将 DOCKER_REGISTRY_SERVER_PASSWORD 值替换为实际密码时,应用服务能够成功拉取容器并启动网站。
为什么这不起作用?
【问题讨论】:
-
您好 Bas van der Kruijssen,欢迎来到堆栈溢出。我可以提个建议吗?如果您以文本形式复制和粘贴信息,而不是使用屏幕截图,您的问题会更好。它有助于提高可读性、可索引性等。
-
嗨@VinceBowdren,感谢您的提示。我已经用错误消息更新了我的帖子。我留下了 keyvault 参考的屏幕截图,因为这是正确配置密钥的视觉参考。
标签: azure azure-web-app-service azure-keyvault azure-container-registry