有没有办法防止覆盖 Azure 容器注册表中的现有标记/图像?

Raf*_*ffy 2 azure docker docker-registry azure-devops azure-container-registry

我在 Azure Devops 中有一个管道,它有一个将 Docker 映像推送到 Azure 容器注册表的任务。我想知道是否有办法防止此任务覆盖任何现有的 Docker 标签/图像。

Kyl*_*ale 5

根据文档

默认情况下,Azure 容器注册表中的标记映像是可变的,因此通过适当的权限,您可以重复更新具有相同标记的映像并将其推送到注册表。也可以根据需要删除容器映像。当您开发映像并需要维护注册表的大小时,此行为很有用。

但是,当您将容器映像部署到生产时,您可能需要一个不可变的容器映像。不可变图像是您不会意外删除或覆盖的图像。

使用 Azure CLI,按标签锁定单个图像:

az acr repository update \
--name myregistry --image myrepo/myimage:tag \
--write-enabled false
Run Code Online (Sandbox Code Playgroud)

您还可以锁定整个存储库:

az acr repository update \
--name myregistry --repository myrepo/myimage \
--write-enabled false
Run Code Online (Sandbox Code Playgroud)

还有一个--delete-enabled论点是防止图像或存储库被删除(尽管它们仍然可以被覆盖。)