Azure 容器注册表中工件缓存的通配符支持

通配符使用星号 (*) 来匹配容器映像注册表中的多个路径。 本文列出了 Azure 容器注册表(ACR) 项目缓存功能 支持的通配符。

注释

缓存规则从 target repository =>source repository 进行映射。

注册表级别通配符

注册表级别通配符允许缓存上游注册表中的所有存储库。

缓存规则 映射 示例:
contoso.azurecr.cn/* =>mcr.microsoft.com/* 将 ACR 下的所有映像映射到 MCR。 contoso.azurecr.cn/myapp/image1= =>mcr.microsoft.com/myapp/image1<br>contoso.azurecr.cn/myapp/image2>mcr.microsoft.com/myapp/image2

存储库级别通配符

通过存储库级别通配符,可以缓存上游注册表中与存储库前缀对应的所有存储库。

缓存规则 映射 示例:
contoso.azurecr.cn/dotnet/* =>mcr.microsoft.com/dotnet/* 将 ACR 下的特定存储库映射到 MCR 中的相应存储库。 contoso.azurecr.cn/dotnet/sdk =>mcr.microsoft.com/dotnet/sdk
contoso.azurecr.cn/dotnet/runtime =>mcr.microsoft.com/dotnet/runtime
contoso.azurecr.cn/library/dotnet/* =>mcr.microsoft.com/dotnet/*
contoso.azurecr.cn/library/python/* =>docker.io/library/python/*
将 ACR 下的特定存储库映射到来自不同上游注册表的存储库。 contoso.azurecr.cn/library/dotnet/app1 =>mcr.microsoft.com/dotnet/app1
contoso.azurecr.cn/library/python/app3 =>docker.io/library/python/app3

基于通配符的缓存规则的限制

通配符缓存规则使用星号 (*) 来匹配容器映像注册表中的多个路径。 这些规则不能与其他通配符缓存规则重叠,不能用于同一存储库路径,也不能用于多个路径中一个包含另一个的情况。 换句话说,如果你有特定注册表路径的通配符缓存规则,则不能添加与它重叠的另一个通配符规则。

下面是重叠规则的一些示例:

示例 1:

现有缓存规则:contoso.azurecr.cn/* => mcr.microsoft.com/*
新建缓存规则: contoso.azurecr.cn/library/* => docker.io/library/*

由于目标存储库路径 contoso.azurecr.cn/library/* 与现有通配符规则 contoso.azurecr.cn/* 重叠,因此系统会阻止添加新的缓存规则。

示例 2:

现有缓存规则:contoso.azurecr.cn/library/* =>mcr.microsoft.com/library/*
新建缓存规则: contoso.azurecr.cn/library/dotnet/* =>docker.io/library/dotnet/*

示例 3:

现有缓存规则:contoso.azurecr.cn/* => mcr.microsoft.com/*
新建缓存规则: contoso.azurecr.cn/* => dockerhub.io/library/*

由于两个规则使用相同的目标存储库路径 contoso.azurecr.cn/*,因此阻止了新缓存规则的添加。

由于目标存储库路径 contoso.azurecr.cn/library/dotnet/* 与现有通配符规则 contoso.azurecr.cn/library/* 重叠,因此系统会阻止添加新的缓存规则。

静态/固定缓存规则的限制

静态或固定缓存规则更具体,不使用通配符。 它们可能会与基于通配符的缓存规则重叠。 如果缓存规则指定固定存储库路径,则允许与基于通配符的缓存规则重叠。 但是,不能创建指向同一确切存储库路径的多个静态规则。

示例 1:

现有缓存规则:contoso.azurecr.cn/* =>mcr.microsoft.com/*
新建缓存规则: contoso.azurecr.cn/library/dotnet =>docker.io/library/dotnet

允许添加新的缓存规则,因为 contoso.azurecr.cn/library/dotnet 是静态路径,可以与通配符缓存规则 contoso.azurecr.cn/* 重叠。

示例 2:

现有缓存规则:contoso.azurecr.cn => mcr.microsoft.com/*
新建缓存规则: contoso.azurecr.cn => dockerhub.io/library/*

由于两个规则使用相同的目标存储库路径 contoso.azurecr.cn,因此阻止了新缓存规则的添加。

后续步骤