Quickstart: De Azure Container Registry-clientbibliotheken gebruiken

Gebruik dit artikel om aan de slag te gaan met de clientbibliotheek voor Azure Container Registry. Volg deze stappen om voorbeeldcode uit te proberen voor gegevensvlakbewerkingen op afbeeldingen en artefacten.

Gebruik de clientbibliotheek voor Azure Container Registry om:

  • Afbeeldingen of artefacten in een register weergeven
  • Metagegevens ophalen voor afbeeldingen en artefacten, opslagplaatsen en tags
  • Eigenschappen lezen/schrijven/verwijderen instellen voor registeritems
  • Installatiekopieën en artefacten, opslagplaatsen en tags verwijderen

Azure Container Registry heeft ook een beheerbibliotheek voor besturingsvlakbewerkingen, waaronder het maken en bijwerken van het register.

Vereisten

  • U hebt een Azure-abonnement en een Azure-containerregister nodig om deze bibliotheek te kunnen gebruiken.

    Als u een nieuw Azure-containerregister wilt maken, kunt u Azure Portal, Azure PowerShell of de Azure CLI gebruiken. Hier volgt een voorbeeld met behulp van de Azure CLI:

    az acr create --name MyContainerRegistry --resource-group MyResourceGroup \
        --location westus --sku Basic
    
  • Push een of meer containerinstallatiekopieën naar uw register. Zie Uw eerste installatiekopieën pushen naar uw Azure-containerregister met behulp van de Docker CLI voor stappen.

Belangrijkste concepten

  • In een Azure-containerregister worden containerinstallatiekopieën en OCI-artefacten opgeslagen.
  • Een afbeelding of artefact bestaat uit een manifest en lagen.
  • Een manifest beschrijft de lagen waaruit de afbeelding of het artefact bestaat. Het wordt uniek geïdentificeerd door de digest.
  • Een afbeelding of artefact kan ook worden getagd om het een door mensen leesbare alias te geven. Aan een afbeelding of artefact kunnen nul of meer tags zijn gekoppeld en elke tag identificeert de afbeelding op unieke wijze.
  • Een verzameling afbeeldingen of artefacten die dezelfde naam hebben, maar verschillende tags hebben, is een opslagplaats.

Zie Voor meer informatie over registers, opslagplaatsen en artefacten.

Aan de slag

Voorbeelden van | broncodepakketten | (NuGet)API |

Als u .NET-toepassingscode wilt ontwikkelen die verbinding kan maken met een Azure Container Registry-exemplaar, hebt u de Azure.Containers.ContainerRegistry bibliotheek nodig.

Het pakket installeren

Installeer de Azure Container Registry-clientbibliotheek voor .NET met NuGet:

dotnet add package Azure.Containers.ContainerRegistry --prerelease

De client verifiëren

Als uw toepassing verbinding kan maken met uw register, moet u er een ContainerRegistryClient maken die ermee kan worden geverifieerd. Gebruik de Azure Identity-bibliotheek om ondersteuning voor Microsoft Entra ID toe te voegen voor het verifiëren van Azure SDK-clients met hun bijbehorende Azure-services.

Wanneer u uw toepassing lokaal ontwikkelt en foutopsporing uitvoert, kunt u uw eigen gebruiker gebruiken om te verifiëren met uw register. U kunt dit onder andere doen door uw gebruiker te verifiëren met de Azure CLI en uw toepassing uit te voeren vanuit deze omgeving. Als uw toepassing een client gebruikt die is samengesteld om te verifiëren, DefaultAzureCredentialwordt deze correct geverifieerd met het register op het opgegeven eindpunt.

// 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
    });

Zie azure Identity README voor meer benaderingen voor verificatie met DefaultAzureCredential, zowel lokaal als in implementatieomgevingen. Als u verbinding wilt maken met registers in niet-openbare Azure-clouds, raadpleegt u de API-verwijzing.

Zie het verificatieoverzicht voor meer informatie over het gebruik van Microsoft Entra ID met Azure Container Registry.

Voorbeelden

In elk voorbeeld wordt ervan uitgegaan dat er een REGISTRY_ENDPOINT omgevingsvariabele is ingesteld op een tekenreeks die het https:// voorvoegsel en de naam van de aanmeldingsserver bevat, bijvoorbeeld 'https://myregistry.azurecr.io".

In de volgende voorbeelden worden asynchrone API's gebruikt die een taak retourneren. Synchrone API's zijn ook beschikbaar.

Opslagplaatsen asynchroon weergeven

Doorloop de verzameling opslagplaatsen in het register.

// 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);
}

Artefacteigenschappen asynchroon instellen

// 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);
}

Afbeeldingen asynchroon verwijderen

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();
    }
}

Aan de slag

Voorbeelden van broncodepakketten (Maven)API | | |

Momenteel ondersteunde omgevingen

Het pakket opnemen

<dependency>
  <groupId>com.azure</groupId>
  <artifactId>azure-containers-containerregistry</artifactId>
  <version>1.0.0-beta.3</version>
</dependency>

De client verifiëren

De Azure Identity-bibliotheek biedt ondersteuning voor Microsoft Entra ID voor verificatie.

In de volgende voorbeelden wordt ervan uitgegaan dat u een registereindpuntreeks hebt met het https:// voorvoegsel en de naam van de aanmeldingsserver, bijvoorbeeld '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();

Zie het verificatieoverzicht voor meer informatie over het gebruik van Microsoft Entra ID met Azure Container Registry.

Voorbeelden

In elk voorbeeld wordt ervan uitgegaan dat er een registereindpunttekenreeks is met het https:// voorvoegsel en de naam van de aanmeldingsserver, bijvoorbeeld 'https://myregistry.azurecr.io".

Namen van opslagplaatsen weergeven

Doorloop de verzameling opslagplaatsen in het register.

DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();
ContainerRegistryClient client = new ContainerRegistryClientBuilder()
    .endpoint(endpoint)
    .credential(credential)
    .buildClient();

client.listRepositoryNames().forEach(repository -> System.out.println(repository));

Artefacteigenschappen instellen

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));

Installatiekopieën verwijderen

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();
        });
}

Aan de slag

Referentievoorbeelden voor broncodepakket (npm) | API | |

Momenteel ondersteunde omgevingen

Zie ons ondersteuningsbeleid voor meer informatie.

Installeer het pakket @azure/container-registry

Installeer de Container Registry-clientbibliotheek voor JavaScript met npm:

npm install @azure/container-registry

De client verifiëren

De Azure Identity-bibliotheek biedt ondersteuning voor Microsoft Entra ID voor verificatie.

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());

Zie het verificatieoverzicht voor meer informatie over het gebruik van Microsoft Entra ID met Azure Container Registry.

Voorbeelden

In elk voorbeeld wordt ervan uitgegaan dat er een CONTAINER_REGISTRY_ENDPOINT omgevingsvariabele is ingesteld op een tekenreeks die het https:// voorvoegsel en de naam van de aanmeldingsserver bevat, bijvoorbeeld 'https://myregistry.azurecr.io".

Opslagplaatsen asynchroon weergeven

Doorloop de verzameling opslagplaatsen in het register.

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);
});

Artefacteigenschappen asynchroon instellen

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);
});

Afbeeldingen asynchroon verwijderen

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);
});

Aan de slag

Referentievoorbeelden van broncodepakket (Pypi) | API | |

Het pakket installeren

Installeer de Azure Container Registry-clientbibliotheek voor Python met pip:

pip install --pre azure-containerregistry

De client verifiëren

De Azure Identity-bibliotheek biedt ondersteuning voor Microsoft Entra ID voor verificatie. Hierbij DefaultAzureCredential wordt ervan uitgegaan dat de AZURE_CLIENT_ID, AZURE_TENANT_IDen AZURE_CLIENT_SECRET omgevingsvariabelen zijn ingesteld. Zie Azure Identity-omgevingsvariabelen voor meer informatie.

# 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())

Voorbeelden

In elk voorbeeld wordt ervan uitgegaan dat er een CONTAINERREGISTRY_ENDPOINT omgevingsvariabele is ingesteld op een tekenreeks die het https:// voorvoegsel en de naam van de aanmeldingsserver bevat, bijvoorbeeld 'https://myregistry.azurecr.io".

Lijsttags asynchroon

In dit voorbeeld wordt ervan uitgegaan dat het register een opslagplaats hello-worldheeft.

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")

Artefacteigenschappen asynchroon instellen

In dit voorbeeld wordt ervan uitgegaan dat het register een opslagplaats heeft met een gelabelde v1installatiekopieënhello-world.

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.

Afbeeldingen asynchroon verwijderen

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]

Aan de slag

Naslaginformatie over broncodepakket | (pkg.go.dev) | REST API

Het pakket installeren

Installeer de Azure Container Registry-clientbibliotheek voor Go met go get:

go get github.com/Azure/azure-sdk-for-go/sdk/containers/azcontainerregistry

De client verifiëren

Wanneer u uw toepassing lokaal ontwikkelt en foutopsporing uitvoert, kunt u azidentity gebruiken . NewDefaultAzureCredential voor verificatie. U wordt aangeraden een beheerde identiteit te gebruiken in een productieomgeving.

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)
	}
}

Zie de azidentity-documentatie voor meer informatie over andere verificatiemethoden.

Voorbeelden

In elk voorbeeld wordt ervan uitgegaan dat de EINDPUNT-URL van het containerregister 'https://myregistry.azurecr.io"' is.

Tags weergeven

In dit voorbeeld wordt ervan uitgegaan dat het register een opslagplaats hello-worldheeft.

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)
		}
	}
}

Artefacteigenschappen instellen

In dit voorbeeld wordt ervan uitgegaan dat het register een opslagplaats heeft met een gelabelde latestinstallatiekopieënhello-world.

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)
}

Installatiekopieën verwijderen

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)
					}
				}
			}
		}
	}
}

Resources opschonen

Als u een Azure-containerregister wilt opschonen en verwijderen, kunt u de resource of resourcegroep verwijderen. Als u de resourcegroep verwijdert, worden ook alle bijbehorende resources verwijderd.

Volgende stappen

In deze quickstart hebt u geleerd hoe u de Azure Container Registry-clientbibliotheek kunt gebruiken om bewerkingen uit te voeren op installatiekopieën en artefacten in uw containerregister.