问题标签 [acr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
880 浏览

azure - 在 Azure Devops Pipeline “未授权:无效的客户端 ID 或客户端密码”中,将 Docker 映像任务拉取和推送到 ACR 失败。

在 Azure DevOps 管道中将映像推送和拉取到 Azure 容器注册表任务失败。当尝试从本地系统拉取或推送时,没有问题,但是当尝试使用 Azure Devops 管道进行操作时,它会失败。Docker 登录成功,但是当我想从 acr 中提取图像时失败,结果如下:

来自守护程序的错误响应:头“ */a2/abcd/manifest/latest”:未经授权:客户端 ID 或客户端密码无效。

##[错误]Bash 以代码“1”退出。##[debug]Processed:##vso[task.issue type=error;]Bash 退出,代码为“1”。

我检查了 Az Devops 中的所有服务连接,它们看起来都配置正确。检查关联的服务主体是否具有 AcrPull 和 AcrPush 权限,它们都已到位。只是无法理解出了什么问题。

我的 Yaml 看起来像这样:

任何人都可以帮忙吗?

0 投票
1 回答
130 浏览

azure - Azure 容器注册表保留策略

我有一个 ACR,它包含用于我的生产和开发环境的 docker 映像。由于每天都会推送新图像,因此我正在尝试设置保留策略。我的确切用例如下,

ACR 用法

根据图像,假设我在 ACR 中有 100 个图像,第 100 个图像被开发环境消耗。但是,生产运行第 40 张图像。话虽如此,我需要保留生产环境和开发环境的最新和最后两张图像。例如,我需要保留第 38、39 和 40 个图像以及第 98、99 和第 100 个图像。

我尝试使用acr purge. 不幸的是,我不能对我的用例使用保留策略或 acr purge(根据我的理解,也许我错了)。

谁能帮我解决这个问题?如果您需要更多信息或要求不明确,请告诉我!

0 投票
1 回答
67 浏览

azure - 如何获取特定时期未使用(拉取)的 ACR 图像详细信息?

我有两个关于 ACR 图像拉取的问题。

  1. 是否有可能获得 ACR docker 映像的拉计数?
  2. 我们能否获取特定时间段内未拉取的 docker 镜像的详细信息?比如最近 7 天没有拉取的图片?
0 投票
1 回答
38 浏览

azure - 从 Azure 容器存储库中提取 docker 映像时出现证书错误

我们正在使用 Azure DevOps 管道构建映像并将其部署到 Azure 容器存储库。一切顺利,但是当我尝试提取图像时出现此错误:

我可以将 docker 映像从我的笔记本电脑部署到 Azure 容器存储库,然后在没有任何问题的情况下拉取映像。因此,问题在于 Azure 容器存储库。

谢谢

0 投票
0 回答
109 浏览

azure - 执行 az acr 挂起并且永远不会完成

描述错误

az acr在 GitHub 中运行操作永远不会完成

重现

在 Github Runner的AZURE CLI 容器中运行命令

预期行为

在 Azure 容器注册表中显示存储库的清单。

我得到的输出

0 投票
0 回答
27 浏览

docker - 将 Docker 映像从 Nexus 存储库移动到 Azure 容器注册表

我在私有 Nexus 存储库中有近 500 GB 的 Docker 映像。我想将它迁移到 Azure 容器注册表。我尝试使用 AzureCloud CLI 运行“az acr import”实用程序。与私有 Nexus 注册表的连接似乎已启动(我可以看到类似 \Running 的输出......),但随后没有任何反应,也没有从 Nexus 导入任何内容。我正在使用管理员凭据。

任何人都可以帮助我快速在注册表中移动这些图像吗?

我运行的命令 -

az acr import –name myregistry –source nexusrepo_dns_name/sourcerepo/sourceimage:tag –image sourceimage:tag –username –password

0 投票
0 回答
47 浏览

azure - Azure 管道 Docker 映像 ACR URI 前缀不适用于单独的构建、自定义命令、推送任务

基于 ADO 管道文档和几个 SO 问题/答案,应该可以在一个步骤中构建图像并在另一个步骤中将其推送到 ACR。

我遇到了“***/”-prefix 问题,这是在构建步骤中获取 ACR URI 前缀的图像名称,链接在这个SO 答案(和其他)中。

我应该处理这个,但我仍然收到推送作业找不到图像的错误。

下面是我的管道的简短版本(旁注:我需要将图像发布为人工制品并在以后的多个阶段下载它。我不想多次构建它)。

  • 构建步骤有效
  • 保存图像步骤检测带有“myacrregistry.azurecr.io”前缀的图像
  • 发布人工制品步骤有效
  • 下一阶段的加载图像步骤有效
  • Push image 步骤失败,输出如下:

我试过这个

  • Docker@2 构建任务(如下)
  • 带有运行 docker build 的脚本的 Bash@3 任务...不使用 ACR_URL 为图像添加前缀
  • 带有运行 docker build ... 的脚本的 Bash@3 任务,并在图像前面加上 ACR_URL
  • Docker@1 构建任务手动指定镜像前缀
  • 使用 myacrregistry.azurecr.io 字符串作为前缀
  • 使用服务连接资源 ID 作为前缀(在许多 SO 帖子之一中看到)
  • 使用服务连接名称作为前缀

一切都是一样的结果:保存图像找到图像没有问题,加载图像加载正常,即使我可以在推送(尝试)之前在图像列表中看到图像,推送也会失败。

我注意到,对于推送任务,我没有在图像名称中指定前缀(尝试过,不起作用),因此 Docker@2 推送任务必须假定前缀是某个字符串。也许该字符串不是我在构建图像时提供的 ACR_URI?不幸的是,我不知道如何查看推送步骤中“***”背后的内容。

有任何想法吗?

编辑:如果构建步骤和推送步骤处于同一阶段,则下面的管道有效。(保存、发布、加载当然是多余的)

管道 YAML:

0 投票
0 回答
29 浏览

azure-container-registry - Helm 图表版本和补丁通配符

使用 Helm 2,我们能够使用“通配符版本”,因此始终使用最新版本(基于 index.yaml 的存储库)。例如,如果有版本为 0.2.0、0.2.1 和 0.2.2 的图表,--version ^v0.2将拉取 0.2.2

现在更改为带有 OCI 存储库(Azure 上的 ACR)的 Helm 3,这似乎不再起作用:

错误:无法渲染图表:退出状态 1:错误:无法在版本“^v0.2”下载“oci://my-repo.azurecr.io/helm/my-chart”

有没有办法在 OCI 存储库的补丁版本中使用通配符?我也试过了~0.2

一种解决方法可能是生成带有标签 0.2 的重复舵图,但我不太喜欢这个想法......

0 投票
0 回答
53 浏览

azure - ACR 清除 - 如何设置正则表达式以跳过清除特定图像

我正在管理一个拥有 100 多个存储库的 Azure 容器注册表。我已经安排了一个 ACR 清除任务,如果计数超过 5,则删除所有图像标签。现在客户说我们需要某种排除,以便我们可以从清理中跳过某些图像。

例如:如果图像的名称类似于

rt123abc.Release

xyzqr345.Release

4hdcb324.Release

这意味着如果图像标签包含“.Release”文本,则不应删除。

我的脚本是这样的。

PURGE_CMD="acr purge --filter 'Repo1:. ' --filter 'Repo2:. ' --ago 1d --untagged --keep 5"

az acr run
--cmd "$PURGE_CMD"
--registry Myregistry
/dev/null

谢谢书房

0 投票
0 回答
11 浏览

azure - Azure DevOps:构建映像并将其注册到 ACR(网络/安全)问题

我有一个练习项目来开始试验 Azure。

Azure Dev Ops 中的 CI 管道构建 docker 映像并将其注册到我的 ACR。

在 Azure 中创建东西还不错,尤其是在没有很好地定义安全性的情况下。而当您想要正确配置安全性时,事情可能会变得具有挑战性。有人可以帮助我了解确保尽可能安全地完成此操作的最佳方法。

以下是一些浮现在脑海中的问题:

Q1) 我必须将我的 ACR 上的公共网络访问设置为 public 才能正常工作。我相信在 CI 管道期间创建的代理每次都有一个新的 IP 地址。即使我知道 IP 地址范围将它们列入白名单甚至是最好的方法?

Q2) Azure Pipelines 自动在 Dev Ops 中创建了一个服务连接,以启用对我的资源的访问。这作为字符串存储在我的 azure-pipelines.yml 中,我决定将其作为变量存储在 DevOps 中并引用它,因此只有在代理运行时才能真正看到它。但是,此字符串仍然显示在我的 Azure Repos 历史记录中。这个服务连接字符串显然是唯一允许某人拉和推到我的 ACR 的东西(+ IP 地址)?

我不希望通过 Azure DevOps 提供访问以使事情正常工作,因为它正在工作。我需要一个好的做法来确保没有人可以从我的 docker 注册表中提取,因为网络受到限制并使用至少隐藏的密钥访问它。