登录到容器注册表时出现以下错误
命令:
docker login <MY_REGISTRY_NAME>.azurecr.io
Run Code Online (Sandbox Code Playgroud)
错误信息:
Error response from daemon: Get https://<MY_REGISTRY_NAME>.azurecr.io/v2/: unauthorized: Application not registered with AAD
Run Code Online (Sandbox Code Playgroud) 我正在尝试将多容器 Web 应用程序部署到 Azure 应用服务。该应用程序从本地计算机上的图像运行良好,但是当我尝试在应用程序服务上运行它时,它不起作用,并且没有错误消息。在日志部分,它显示“检索日志时出错”。
下面是我的 docker compose 文件的 YAML,我尝试了各种不同的版本,但我永远无法从 Azure 获取任何错误消息。
我究竟做错了什么?如何从 Azure 应用服务获取 Docker 日志?
version: '3.7'
services:
web:
image: ptd_reports_app
command: gunicorn TransitData.wsgi:application --bind 0.0.0.0:8000
volumes:
- static_volume:/home/PublicTransitDataReportingPortal/web/staticfiles
expose:
- 8000
restart: always
environment:
DEBUG=1
SECRET_KEY=<secret key>
DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1]
EMAIL_HOST_PASSWORD=<email password>
nginx:
image: ptd_reports_nginx
restart: always
volumes:
- static_volume:/home/PublicTransitDataReportingPortal/web/staticfiles
ports:
- 1337:80
depends_on:
- web
volumes:
static_volume:
Run Code Online (Sandbox Code Playgroud) 我有以下 terraform 模块来在同一计划下设置应用程序服务:
provider "azurerm" {
}
variable "env" {
type = string
description = "The SDLC environment (qa, dev, prod, etc...)"
}
variable "appsvc_names" {
type = list(string)
description = "The names of the app services to create under the same app service plan"
}
locals {
location = "eastus2"
resource_group_name = "app505-dfpg-${var.env}-web-${local.location}"
acr_name = "app505dfpgnedeploycr88836"
}
resource "azurerm_app_service_plan" "asp" {
name = "${local.resource_group_name}-asp"
location = local.location
resource_group_name = local.resource_group_name
kind = "Linux"
reserved = true
sku {
tier …Run Code Online (Sandbox Code Playgroud) azure docker terraform azure-web-app-service azure-container-registry
我正在尝试设置我的应用程序容器服务,以便它可以使用托管身份从我们的 ACR 中提取 docker 映像,而不是将用户名和密码存储在应用程序设置中(除了我们想要编写这些部署的脚本之外,如果应用程序服务需要用户名和密码,那么我们必须将它们存储在源代码管理中)。
令人难以置信的是,我找不到有关此场景的任何文档。我发现的最接近的是使用托管身份从虚拟机中提取 ACR 映像[ https://learn.microsoft.com/en-us/azure/container-registry/container-registry-authentication-management-identity],我不能将其用作指南,因为最后一步(我唯一缺少的一点)是通过SSH 进入虚拟机并az acr login --name myContainerRegistry在命令行中运行。
我必须去的地方:
ACR Pull应用Reader程序服务的系统分配身份我不知道下一步该做什么;就像我说的,我找不到关于这种情况的任何指南。
我已经设置了一个 Azure 应用服务 (Linux) 发布方法 Code,并设置了适当的管道来构建和部署我的代码 (nodejs)。现在我需要对运行我的代码的主机进行更多控制(需要 poppler)。在开发+测试中,我创建了新的应用程序服务并选择 Docker 容器作为发布方法
我的问题:对于我的 PROD 实例,是否可以更改现有应用程序服务的发布方法,或者我是否必须创建新的应用程序服务?
假设是后者,我需要更新客户端以指向新的应用服务 URL。为了避免这种情况,我可以先删除现有的应用服务并创建一个同名的新应用服务吗?这会让我失去所有统计数据和日志。
还有其他建议吗?
我已经尝试过az aks show和az aks list命令,但它们不显示所附 ACR 的名称。我运行了使用附加 acr 的命令az aks update --attach-acr,它显示它已附加。

我可以通过 CLI 或门户看到 acr 在集群中吗?
在学习 AZ-204 认证时,我发现自己遇到了与两个命令相关的问题。
使用 az acr run 命令从容器注册表运行 example/hello-world:v1 容器映像
az acr run \
--registry <myContainerRegistry> \
--cmd '$Registry/sample/hello-world:v1' /dev/null
Run Code Online (Sandbox Code Playgroud)
运行以下 az container create 命令来启动容器实例
az container create \
--resource-group az204-aci-rg \
--name mycontainer \
--image mcr.microsoft.com/azuredocs/aci-helloworld \
--ports 80 \
--dns-name-label $DNS_NAME_LABEL --location <myLocation> \
Run Code Online (Sandbox Code Playgroud)
如果都运行容器,这两个命令有什么区别?
谢谢。
containers azure azure-cli azure-container-registry azure-container-instances
有没有人有任何建议如何在Azure容器服务(kubernetes)中运行时从Azure容器注册表中提取
我尝试过像下面这样的示例部署,但图像拉动失败了:
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: jenkins-master
spec:
replicas: 1
template:
metadata:
name: jenkins-master
labels:
name: jenkins-master
spec:
containers:
- name: jenkins-master
image: myregistry.azurecr.io/infrastructure/jenkins-master:1.0.0
imagePullPolicy: Always
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 20
timeoutSeconds: 5
ports:
- name: jenkins-web
containerPort: 8080
- name: jenkins-agent
containerPort: 50000
Run Code Online (Sandbox Code Playgroud) azure docker kubernetes azure-container-service azure-container-registry
我正在使用 spring boot maven 插件在 Azure DevOps 上构建一个 java spring boot 应用程序 docker 容器。之后我想将其推送到天蓝色的容器注册表。但它失败了
本地不存在带有以下标签的镜像:***/my/container
不幸的是,容器 uri 的开头被***. 但正如您在下面的输出中看到的/usr/bin/docker images,容器已注册。我尝试遵循以下示例:https://medium.com/@TimvanBaarsen/build-your-spring-boot-project-using-azure-pipelines-in-azure-devops-3305977991d
管道步骤
steps:
- task: Maven@3
displayName: "Build Docker image"
inputs:
mavenPomFile: 'pom.xml'
goals: 'spring-boot:build-image'
publishJUnitResults: false
jdkVersionOption: '1.11'
mavenOptions: '-Xmx3072m -Dspring-boot.build-image.imageName=acr-foobar.azurecr.io/my/container'
- task: Docker@2
displayName: Push Docker image
inputs:
containerRegistry: 'acr-foobar.azurecr.io'
repository: 'my/container'
command: 'push'
tags: 'latest'
Run Code Online (Sandbox Code Playgroud)
输出 Maven 任务
[INFO] Successfully built image 'acr-***/my/container:latest'
Run Code Online (Sandbox Code Playgroud)
输出 Docker 任务
Starting: Push Docker image
==============================================================================
Task : …Run Code Online (Sandbox Code Playgroud) azure ×8
docker ×5
azure-devops ×2
kubernetes ×2
azure-cli ×1
containers ×1
spring-boot ×1
terraform ×1