Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Container Registry istemci kitaplığını kullanmaya başlamak için bu makaleyi kullanın. Görüntülerde ve yapıtlarda veri düzlemi işlemleri için örnek kod denemek için bu adımları izleyin.
Azure Container Registry için istemci kitaplığını kullanarak:
- Kayıt defterindeki görüntüleri veya yapıtları listeleme
- Görüntüler ve yapıtlar, depolar ve etiketler için meta verileri alma
- Kayıt defteri öğelerinde okuma/yazma/silme özelliklerini ayarlama
- Görüntüleri ve yapıtları, depoları ve etiketleri silme
Azure Container Registry ayrıca kayıt defteri oluşturma ve güncelleştirmeler de dahil olmak üzere denetim düzlemi işlemleri için bir yönetim kitaplığına sahiptir.
Prerequisites
Bu kitaplığı kullanmak için bir Azure aboneliğine ve azure kapsayıcı kayıt defterine ihtiyacınız vardır.
Yeni bir Azure kapsayıcı kayıt defteri oluşturmak için Azure portalını, Azure PowerShell'i veya Azure CLI'yı kullanabilirsiniz. Azure CLI'yi kullanan bir örnek aşağıda verilmişti:
az acr create --name MyContainerRegistry --resource-group MyResourceGroup \ --location westus --sku BasicKayıt defterinize bir veya daha fazla kapsayıcı görüntüsü gönderin. Adımlar için bkz . Docker CLI kullanarak azure kapsayıcı kayıt defterinize ilk görüntünüzü gönderme.
Temel kavramlar
- Azure kapsayıcı kayıt defteri kapsayıcı görüntülerini ve OCI yapıtlarını depolar.
- Görüntü veya yapıt bir bildirimden ve katmanlardan oluşur.
- Bildirim, görüntüyü veya yapıtı oluşturan katmanları açıklar. Özetine göre benzersiz olarak tanımlanır.
- Bir resim veya yapıt, ona insan tarafından okunabilir bir ad vermek için etiketlenebilir. Görüntü veya yapıtla ilişkilendirilmiş sıfır veya daha fazla etiket olabilir ve her etiket görüntüyü benzersiz olarak tanımlar.
- Aynı adı paylaşan ancak farklı etiketlere sahip olan resim veya yapıt koleksiyonu bir depodur.
Daha fazla bilgi için bkz. Kayıt defterleri, depolar ve yapıtlar hakkında.
Get started
Kaynak kodu | Paket (NuGet) | API başvurusu | Örnekleri
Azure Container Registry örneğine bağlanabilen .NET uygulama kodu geliştirmek için kitaplığa Azure.Containers.ContainerRegistry ihtiyacınız olacaktır.
Paketi yükle
NuGet ile .NET için Azure Container Registry istemci kitaplığını yükleyin:
dotnet add package Azure.Containers.ContainerRegistry --prerelease
İstemcinin kimliğini doğrulama
Uygulamanızın kayıt defterinize bağlanması için kimlik doğrulaması yapabilen bir ContainerRegistryClient oluşturmanız gerekir. Azure SDK istemcilerinin kimliğini ilgili Azure hizmetleriyle doğrulamak için Microsoft Entra ID desteği eklemek için Azure Kimlik kitaplığını kullanın.
Uygulamanızı yerel olarak geliştirirken ve hata ayıklarken, kayıt defterinizle kimlik doğrulaması yapmak için kendi kullanıcınızı kullanabilirsiniz. Bunu gerçekleştirmenin bir yolu, Azure CLI ile kullanıcınızın kimliğini doğrulamak ve uygulamanızı bu ortamdan çalıştırmaktır. Uygulamanız ile DefaultAzureCredentialkimlik doğrulaması yapmak için yapılmış bir istemci kullanıyorsa, belirtilen uç noktada kayıt defteriyle doğru şekilde kimlik doğrulaması yapar.
// Create a ContainerRegistryClient that will authenticate to your registry through Azure Active Directory
Uri endpoint = new Uri("https://myregistry.azurecr.io");
ContainerRegistryClient client = new ContainerRegistryClient(endpoint, new DefaultAzureCredential(),
new ContainerRegistryClientOptions()
{
Audience = ContainerRegistryAudience.AzureResourceManagerPublicCloud
});
ile hem yerel hem de dağıtım ortamlarında kimlik doğrulamasına yönelik daha fazla yaklaşım için DefaultAzureCredential. Genel olmayan Azure bulutlarındaki kayıt defterlerine bağlanmak için API başvurusuna bakın.
Microsoft Entra ID'yi Azure Container Registry ile kullanma hakkında daha fazla bilgi için kimlik doğrulamasına genel bakış bölümüne bakın.
Examples
Örneklerin her biri, bir ortam değişkeninin, oturum açma sunucusunun ön ekini ve adını içeren bir dizeye ayarlandığını varsayar, örneğin "REGISTRY_ENDPOINT".
Zaman uyumsuz API'ler kullanan aşağıdaki örnekler bir görev döndürür. Zaman uyumlu API'ler de kullanılabilir.
Depoları zaman uyumsuz olarak listeleme
Kayıtta depolar koleksiyonu üzerinde gezinme yapın.
// Get the service endpoint from the environment
Uri endpoint = new Uri(Environment.GetEnvironmentVariable("REGISTRY_ENDPOINT"));
// Create a new ContainerRegistryClient
ContainerRegistryClient client = new ContainerRegistryClient(endpoint, new DefaultAzureCredential(),
new ContainerRegistryClientOptions()
{
Audience = ContainerRegistryAudience.AzureResourceManagerPublicCloud
});
// Get the collection of repository names from the registry
AsyncPageable<string> repositories = client.GetRepositoryNamesAsync();
await foreach (string repository in repositories)
{
Console.WriteLine(repository);
}
Artifakt özelliklerini zaman uyumsuz şekilde ayarlamak
// Get the service endpoint from the environment
Uri endpoint = new Uri(Environment.GetEnvironmentVariable("REGISTRY_ENDPOINT"));
// Create a new ContainerRegistryClient
ContainerRegistryClient client = new ContainerRegistryClient(endpoint, new DefaultAzureCredential(),
new ContainerRegistryClientOptions()
{
Audience = ContainerRegistryAudience.AzureResourceManagerPublicCloud
});
// Get the collection of repository names from the registry
AsyncPageable<string> repositories = client.GetRepositoryNamesAsync();
await foreach (string repository in repositories)
{
Console.WriteLine(repository);
}
Görüntüleri zaman uyumsuz olarak silme
using System.Linq;
using Azure.Containers.ContainerRegistry;
using Azure.Identity;
// Get the service endpoint from the environment
Uri endpoint = new Uri(Environment.GetEnvironmentVariable("REGISTRY_ENDPOINT"));
// Create a new ContainerRegistryClient
ContainerRegistryClient client = new ContainerRegistryClient(endpoint, new DefaultAzureCredential(),
new ContainerRegistryClientOptions()
{
Audience = ContainerRegistryAudience.AzureResourceManagerPublicCloud
});
// Iterate through repositories
AsyncPageable<string> repositoryNames = client.GetRepositoryNamesAsync();
await foreach (string repositoryName in repositoryNames)
{
ContainerRepository repository = client.GetRepository(repositoryName);
// Obtain the images ordered from newest to oldest
AsyncPageable<ArtifactManifestProperties> imageManifests =
repository.GetManifestPropertiesCollectionAsync(orderBy: ArtifactManifestOrderBy.LastUpdatedOnDescending);
// Delete images older than the first three.
await foreach (ArtifactManifestProperties imageManifest in imageManifests.Skip(3))
{
RegistryArtifact image = repository.GetArtifact(imageManifest.Digest);
Console.WriteLine($"Deleting image with digest {imageManifest.Digest}.");
Console.WriteLine($" Deleting the following tags from the image: ");
foreach (var tagName in imageManifest.Tags)
{
Console.WriteLine($" {imageManifest.RepositoryName}:{tagName}");
await image.DeleteTagAsync(tagName);
}
await image.DeleteAsync();
}
}
Get started
Kaynak kodu | Paket (Maven) | API başvurusu | Örnekleri
Şu anda desteklenen ortamlar
- Java Development Kit (JDK), sürüm 8 veya üzeri.
Paketi dahil et
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-containers-containerregistry</artifactId>
<version>1.0.0-beta.3</version>
</dependency>
İstemcinin kimliğini doğrulama
Azure Kimlik kitaplığı kimlik doğrulaması için Microsoft Entra ID desteği sağlar.
Aşağıdaki örneklerde, oturum açma sunucusunun ön ekini https:// ve adını içeren bir kayıt defteri uç nokta dizeniz olduğu varsayılır; örneğin, "https://myregistry.azurecr.io".
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();
ContainerRegistryClient client = new ContainerRegistryClientBuilder()
.endpoint(endpoint)
.credential(credential)
.buildClient();
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();
ContainerRegistryAsyncClient client = new ContainerRegistryClientBuilder()
.endpoint(endpoint)
.credential(credential)
.buildAsyncClient();
Microsoft Entra ID'yi Azure Container Registry ile kullanma hakkında daha fazla bilgi için kimlik doğrulamasına genel bakış bölümüne bakın.
Examples
Her örnek, oturum açma sunucusunun ön ekini https:// ve adını içeren bir kayıt defteri uç noktası dizesi olduğunu varsayar; örneğin, "https://myregistry.azurecr.io".
Depo adlarını listeleme
Kayıtta depolar koleksiyonu üzerinde gezinme yapın.
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();
ContainerRegistryClient client = new ContainerRegistryClientBuilder()
.endpoint(endpoint)
.credential(credential)
.buildClient();
client.listRepositoryNames().forEach(repository -> System.out.println(repository));
Eser özelliklerini ayarla
TokenCredential defaultCredential = new DefaultAzureCredentialBuilder().build();
ContainerRegistryClient client = new ContainerRegistryClientBuilder()
.endpoint(endpoint)
.credential(defaultCredential)
.buildClient();
RegistryArtifact image = client.getArtifact(repositoryName, digest);
image.updateTagProperties(
tag,
new ArtifactTagProperties()
.setWriteEnabled(false)
.setDeleteEnabled(false));
Görüntüleri silme
TokenCredential defaultCredential = new DefaultAzureCredentialBuilder().build();
ContainerRegistryClient client = new ContainerRegistryClientBuilder()
.endpoint(endpoint)
.credential(defaultCredential)
.buildClient();
final int imagesCountToKeep = 3;
for (String repositoryName : client.listRepositoryNames()) {
final ContainerRepository repository = client.getRepository(repositoryName);
// Obtain the images ordered from newest to oldest
PagedIterable<ArtifactManifestProperties> imageManifests =
repository.listManifestProperties(
ArtifactManifestOrderBy.LAST_UPDATED_ON_DESCENDING,
Context.NONE);
imageManifests.stream().skip(imagesCountToKeep)
.forEach(imageManifest -> {
System.out.printf(String.format("Deleting image with digest %s.%n", imageManifest.getDigest()));
System.out.printf(" This image has the following tags: ");
for (String tagName : imageManifest.getTags()) {
System.out.printf(" %s:%s", imageManifest.getRepositoryName(), tagName);
}
repository.getArtifact(imageManifest.getDigest()).delete();
});
}
Get started
Kaynak kodu | Paket (npm) | API başvurusu | Örnekleri
Şu anda desteklenen ortamlar
Daha fazla ayrıntı için destek ilkemize bakın.
@azure/container-registry paketini yükleme
ile npmJavaScript için Container Registry istemci kitaplığını yükleyin:
npm install @azure/container-registry
İstemcinin kimliğini doğrulama
Azure Kimlik kitaplığı kimlik doğrulaması için Microsoft Entra ID desteği sağlar.
const { ContainerRegistryClient } = require("@azure/container-registry");
const { DefaultAzureCredential } = require("@azure/identity");
const endpoint = process.env.CONTAINER_REGISTRY_ENDPOINT;
// Create a ContainerRegistryClient that will authenticate through Active Directory
const client = new ContainerRegistryClient(endpoint, new DefaultAzureCredential());
Microsoft Entra ID'yi Azure Container Registry ile kullanma hakkında daha fazla bilgi için kimlik doğrulamasına genel bakış bölümüne bakın.
Examples
Örneklerin her biri, bir ortam değişkeninin, oturum açma sunucusunun ön ekini ve adını içeren bir dizeye ayarlandığını varsayar, örneğin "CONTAINER_REGISTRY_ENDPOINT".
Depoları zaman uyumsuz olarak listeleme
Kayıtta depolar koleksiyonu üzerinde gezinme yapın.
const { ContainerRegistryClient } = require("@azure/container-registry");
const { DefaultAzureCredential } = require("@azure/identity");
async function main() {
// endpoint should be in the form of "https://myregistryname.azurecr.io"
// where "myregistryname" is the actual name of your registry
const endpoint = process.env.CONTAINER_REGISTRY_ENDPOINT || "<endpoint>";
const client = new ContainerRegistryClient(endpoint, new DefaultAzureCredential());
console.log("Listing repositories");
const iterator = client.listRepositoryNames();
for await (const repository of iterator) {
console.log(` repository: ${repository}`);
}
}
main().catch((err) => {
console.error("The sample encountered an error:", err);
});
Artifakt özelliklerini zaman uyumsuz şekilde ayarlamak
const { ContainerRegistryClient } = require("@azure/container-registry");
const { DefaultAzureCredential } = require("@azure/identity");
async function main() {
// Get the service endpoint from the environment
const endpoint = process.env.CONTAINER_REGISTRY_ENDPOINT || "<endpoint>";
// Create a new ContainerRegistryClient and RegistryArtifact to access image operations
const client = new ContainerRegistryClient(endpoint, new DefaultAzureCredential());
const image = client.getArtifact("library/hello-world", "v1");
// Set permissions on the image's "latest" tag
await image.updateTagProperties("latest", { canWrite: false, canDelete: false });
}
main().catch((err) => {
console.error("The sample encountered an error:", err);
});
Görüntüleri zaman uyumsuz olarak silme
const { ContainerRegistryClient } = require("@azure/container-registry");
const { DefaultAzureCredential } = require("@azure/identity");
async function main() {
// Get the service endpoint from the environment
const endpoint = process.env.CONTAINER_REGISTRY_ENDPOINT || "<endpoint>";
// Create a new ContainerRegistryClient
const client = new ContainerRegistryClient(endpoint, new DefaultAzureCredential());
// Iterate through repositories
const repositoryNames = client.listRepositoryNames();
for await (const repositoryName of repositoryNames) {
const repository = client.getRepository(repositoryName);
// Obtain the images ordered from newest to oldest by passing the `orderBy` option
const imageManifests = repository.listManifestProperties({
orderBy: "LastUpdatedOnDescending"
});
const imagesToKeep = 3;
let imageCount = 0;
// Delete images older than the first three.
for await (const manifest of imageManifests) {
imageCount++;
if (imageCount > imagesToKeep) {
const image = repository.getArtifact(manifest.digest);
console.log(`Deleting image with digest ${manifest.digest}`);
console.log(` Deleting the following tags from the image:`);
for (const tagName of manifest.tags) {
console.log(` ${manifest.repositoryName}:${tagName}`);
image.deleteTag(tagName);
}
await image.delete();
}
}
}
}
main().catch((err) => {
console.error("The sample encountered an error:", err);
});
Get started
Kaynak kodu | Paket (Pypi) | API başvurusu | Örnekleri
Paketi yükle
Python için Azure Container Registry istemci kitaplığını pip ile yükleyin:
pip install --pre azure-containerregistry
İstemcinin kimliğini doğrulama
Azure Kimlik kitaplığı kimlik doğrulaması için Microsoft Entra ID desteği sağlar.
DefaultAzureCredential, AZURE_CLIENT_ID, AZURE_TENANT_ID ve AZURE_CLIENT_SECRET ortam değişkenlerinin ayarlandığını varsayar. Daha fazla bilgi için bkz. Azure Identity ortam değişkenleri.
# Create a ContainerRegistryClient that will authenticate through Active Directory
from azure.containerregistry import ContainerRegistryClient
from azure.identity import DefaultAzureCredential
account_url = "https://mycontainerregistry.azurecr.io"
client = ContainerRegistryClient(account_url, DefaultAzureCredential())
Examples
Örneklerin her biri, bir ortam değişkeninin, oturum açma sunucusunun ön ekini ve adını içeren bir dizeye ayarlandığını varsayar, örneğin "CONTAINERREGISTRY_ENDPOINT".
Etiketleri zaman uyumsuz olarak listeleme
Bu örnekte, kayıt defterinin bir deposu hello-worldolduğu varsayılır.
import asyncio
from dotenv import find_dotenv, load_dotenv
import os
from azure.containerregistry.aio import ContainerRegistryClient
from azure.identity.aio import DefaultAzureCredential
class ListTagsAsync(object):
def __init__(self):
load_dotenv(find_dotenv())
async def list_tags(self):
# Create a new ContainerRegistryClient
audience = "https://management.azure.com"
account_url = os.environ["CONTAINERREGISTRY_ENDPOINT"]
credential = DefaultAzureCredential()
client = ContainerRegistryClient(account_url, credential, audience=audience)
manifest = await client.get_manifest_properties("library/hello-world", "latest")
print(manifest.repository_name + ": ")
for tag in manifest.tags:
print(tag + "\n")
Artifakt özelliklerini zaman uyumsuz şekilde ayarlamak
Bu örnekte, kayıt defterinin görüntü etiketli bir deposu hello-world olduğu varsayılır v1.
import asyncio
from dotenv import find_dotenv, load_dotenv
import os
from azure.containerregistry.aio import ContainerRegistryClient
from azure.identity.aio import DefaultAzureCredential
class SetImagePropertiesAsync(object):
def __init__(self):
load_dotenv(find_dotenv())
async def set_image_properties(self):
# Create a new ContainerRegistryClient
account_url = os.environ["CONTAINERREGISTRY_ENDPOINT"]
audience = "https://management.azure.com"
credential = DefaultAzureCredential()
client = ContainerRegistryClient(account_url, credential, audience=audience)
# [START update_manifest_properties]
# Set permissions on the v1 image's "latest" tag
await client.update_manifest_properties(
"library/hello-world",
"latest",
can_write=False,
can_delete=False
)
# [END update_manifest_properties]
# After this update, if someone were to push an update to "myacr.azurecr.io\hello-world:v1", it would fail.
# It's worth noting that if this image also had another tag, such as "latest", and that tag did not have
# permissions set to prevent reads or deletes, the image could still be overwritten. For example,
# if someone were to push an update to "myacr.azurecr.io\hello-world:latest"
# (which references the same image), it would succeed.
Görüntüleri zaman uyumsuz olarak silme
import asyncio
from dotenv import find_dotenv, load_dotenv
import os
from azure.containerregistry import ManifestOrder
from azure.containerregistry.aio import ContainerRegistryClient
from azure.identity.aio import DefaultAzureCredential
class DeleteImagesAsync(object):
def __init__(self):
load_dotenv(find_dotenv())
async def delete_images(self):
# [START list_repository_names]
audience = "https://management.azure.com"
account_url = os.environ["CONTAINERREGISTRY_ENDPOINT"]
credential = DefaultAzureCredential()
client = ContainerRegistryClient(account_url, credential, audience=audience)
async with client:
async for repository in client.list_repository_names():
print(repository)
# [END list_repository_names]
# [START list_manifest_properties]
# Keep the three most recent images, delete everything else
manifest_count = 0
async for manifest in client.list_manifest_properties(repository, order_by=ManifestOrder.LAST_UPDATE_TIME_DESCENDING):
manifest_count += 1
if manifest_count > 3:
await client.delete_manifest(repository, manifest.digest)
# [END list_manifest_properties]
Get started
Kaynak kodu | Paket (pkg.go.dev) | REST API başvurusu
Paketi yükle
Go için Azure Container Registry istemci kitaplığını go get ile yükleyin.
go get github.com/Azure/azure-sdk-for-go/sdk/containers/azcontainerregistry
İstemcinin kimliğini doğrulama
Uygulamanızı yerel ortamda geliştirip hata ayıklarken, kimlik doğrulaması için azidentity.NewDefaultAzureCredential kullanabilirsiniz. Üretim ortamında yönetilen kimlik kullanmanızı öneririz.
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/containers/azcontainerregistry"
"log"
)
func main() {
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("failed to obtain a credential: %v", err)
}
client, err := azcontainerregistry.NewClient("https://myregistry.azurecr.io", cred, nil)
if err != nil {
log.Fatalf("failed to create client: %v", err)
}
}
Diğer kimlik doğrulama yaklaşımları hakkında daha fazla bilgi için azidentity belgelerine bakın.
Examples
Her bir örnek, kapsayıcı kayıt defteri uç noktası URL'sinin "https://myregistry.azurecr.io".
Etiketleri listeleme
Bu örnekte, kayıt defterinin bir deposu hello-worldolduğu varsayılır.
import (
"context"
"fmt"
"github.com/Azure/azure-sdk-for-go/sdk/containers/azcontainerregistry"
"log"
)
func Example_listTagsWithAnonymousAccess() {
client, err := azcontainerregistry.NewClient("https://myregistry.azurecr.io", nil, nil)
if err != nil {
log.Fatalf("failed to create client: %v", err)
}
ctx := context.Background()
pager := client.NewListTagsPager("library/hello-world", nil)
for pager.More() {
page, err := pager.NextPage(ctx)
if err != nil {
log.Fatalf("failed to advance page: %v", err)
}
for _, v := range page.Tags {
fmt.Printf("tag: %s\n", *v.Name)
}
}
}
Eser özelliklerini ayarla
Bu örnekte, kayıt defterinin görüntü etiketli bir deposu hello-world olduğu varsayılır latest.
package azcontainerregistry_test
import (
"context"
"fmt"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/containers/azcontainerregistry"
"log"
)
func Example_setArtifactProperties() {
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("failed to obtain a credential: %v", err)
}
client, err := azcontainerregistry.NewClient("https://myregistry.azurecr.io", cred, nil)
if err != nil {
log.Fatalf("failed to create client: %v", err)
}
ctx := context.Background()
res, err := client.UpdateTagProperties(ctx, "library/hello-world", "latest", &azcontainerregistry.ClientUpdateTagPropertiesOptions{
Value: &azcontainerregistry.TagWriteableProperties{
CanWrite: to.Ptr(false),
CanDelete: to.Ptr(false),
}})
if err != nil {
log.Fatalf("failed to finish the request: %v", err)
}
fmt.Printf("repository library/hello-world - tag latest: 'CanWrite' property: %t, 'CanDelete' property: %t\n", *res.Tag.ChangeableAttributes.CanWrite, *res.Tag.ChangeableAttributes.CanDelete)
}
Görüntüleri silme
package azcontainerregistry_test
import (
"context"
"fmt"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/containers/azcontainerregistry"
"log"
)
func Example_deleteImages() {
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("failed to obtain a credential: %v", err)
}
client, err := azcontainerregistry.NewClient("https://myregistry.azurecr.io", cred, nil)
if err != nil {
log.Fatalf("failed to create client: %v", err)
}
ctx := context.Background()
repositoryPager := client.NewListRepositoriesPager(nil)
for repositoryPager.More() {
repositoryPage, err := repositoryPager.NextPage(ctx)
if err != nil {
log.Fatalf("failed to advance repository page: %v", err)
}
for _, r := range repositoryPage.Repositories.Names {
manifestPager := client.NewListManifestsPager(*r, &azcontainerregistry.ClientListManifestsOptions{
OrderBy: to.Ptr(azcontainerregistry.ArtifactManifestOrderByLastUpdatedOnDescending),
})
for manifestPager.More() {
manifestPage, err := manifestPager.NextPage(ctx)
if err != nil {
log.Fatalf("failed to advance manifest page: %v", err)
}
imagesToKeep := 3
for i, m := range manifestPage.Manifests.Attributes {
if i >= imagesToKeep {
for _, t := range m.Tags {
fmt.Printf("delete tag from image: %s", *t)
_, err := client.DeleteTag(ctx, *r, *t, nil)
if err != nil {
log.Fatalf("failed to delete tag: %v", err)
}
}
_, err := client.DeleteManifest(ctx, *r, *m.Digest, nil)
if err != nil {
log.Fatalf("failed to delete manifest: %v", err)
}
fmt.Printf("delete image with digest: %s", *m.Digest)
}
}
}
}
}
}
Kaynakları temizle
Azure kapsayıcı kayıt defterini temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunu silmek, onunla ilişkili olan diğer tüm kaynakları da siler.
Sonraki Adımlar
Bu hızlı başlangıçta, kapsayıcı kayıt defterinizdeki görüntüler ve yapıtlar üzerinde işlemler gerçekleştirmek için Azure Container Registry istemci kitaplığını kullanmayı öğrendiniz.
Daha fazla bilgi için API başvurusu belgelerine bakın:
Azure Container Registry REST API'sini öğrenin.