Quickstart: De clientbibliotheken Azure Container Registry gebruiken
Gebruik dit artikel om aan de slag te gaan met de clientbibliotheek voor Azure Container Registry. Volg deze stappen om voorbeeldcode voor gegevensvlakbewerkingen op afbeeldingen en artefacten uit te proberen.
Gebruik de clientbibliotheek voor Azure Container Registry volgende:
- Lijst met afbeeldingen of artefacten in een register
- Metagegevens verkrijgen voor afbeeldingen en artefacten, opslagplaatsen en tags
- Eigenschappen voor lezen/schrijven/verwijderen instellen voor registeritems
- Afbeeldingen en artefacten, opslagplaatsen en tags verwijderen
Azure Container Registry heeft ook een beheerbibliotheek voor besturingsvlakbewerkingen, waaronder het maken van registers en updates.
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 de Azure Portal, Azure PowerShellof de Azure CLI gebruiken. Hier is een voorbeeld van het gebruik van de Azure CLI:
az acr create --name MyContainerRegistry --resource-group MyResourceGroup \ --location westus --sku BasicPush een of meer container-afbeeldingen naar uw register. Zie Push your first image to your Azure container registry using the Docker CLI (Uw eerste afbeelding naar uw Azure-containerregister pushen met behulp van de Docker CLI) voor stappen.
Belangrijkste concepten
- Een Azure-containerregister slaat containerafbeeldingen en OCI-artefacten op.
- Een afbeelding of artefact bestaat uit een manifest en lagen.
- Een manifest beschrijft de lagen waar de afbeelding of het artefact uit is gemaakt. Deze wordt uniek geïdentificeerd door de samenvatting.
- Een afbeelding of artefact kan ook worden getagd om deze 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 uniek.
- Een verzameling afbeeldingen of artefacten met dezelfde naam, maar met verschillende tags, is een opslagplaats.
Aan de slag
Broncode | Pakket (NuGet) | API-verwijzing | Monsters
Als u .NET-toepassingscode wilt ontwikkelen die verbinding kan maken met Azure Container Registry-exemplaar, hebt u de bibliotheek Azure.Containers.ContainerRegistry 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 u wilt dat uw toepassing verbinding maakt met uw register, moet u een maken die verantwoordelijk is ContainerRegistryClient voor verificatie. Gebruik de Azure Identity-bibliotheek om Azure Active Directory voor het verifiëren van Azure SDK-clients met hun bijbehorende Azure-services toe te voegen.
Wanneer u uw toepassing lokaal ontwikkelt en debugt, kunt u uw eigen gebruiker gebruiken om te verifiëren bij uw register. Een manier om dit te doen, is 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 met , wordt deze op de juiste wijze geverifieerd bij het register op DefaultAzureCredential 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 ReadME voor Azure Identity voor meer methoden voor het verifiëren met DefaultAzureCredential , zowel lokaal als in implementatieomgevingen. Zie de API-verwijzingom verbinding te maken met registers in niet-openbare Azure-clouds.
Zie het verificatieoverzicht voor meer informatie Azure Container Registry het gebruik van Azure AD met verificatie.
Voorbeelden
In elk voorbeeld wordt ervan uitgenomen dat er een omgevingsvariabele is ingesteld op een tekenreeks met het voorvoegsel en de naam van de aanmeldingsserver, REGISTRY_ENDPOINT https:// bijvoorbeeld " https://myregistry.azurecr.io ".
In de volgende voorbeelden worden asynchrone API's gebruikt die een taak retourneren. Er zijn ook synchrone API's beschikbaar.
Opslagplaatsen asynchroon weergeven
Door de verzameling opslagplaatsen in het register te itereren.
// 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
Broncode | Pakket (Maven) | API-verwijzing | Monsters
Momenteel ondersteunde omgevingen
- Java Development Kit (JDK),versie 8 of hoger.
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 Azure Active Directory ondersteuning voor verificatie.
In de volgende voorbeelden wordt ervan uitgenomen dat u een register-eindpuntreeks hebt met het voorvoegsel en de naam van de aanmeldingsserver, https:// 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 Azure Container Registry het gebruik van Azure AD met verificatie.
Voorbeelden
In elk voorbeeld wordt ervan uitgenomen dat er een register-eindpuntreeks is met het voorvoegsel en de naam van de aanmeldingsserver, https:// bijvoorbeeld " https://myregistry.azurecr.io ".
Namen van opslagplaatsen opnoemen
Door de verzameling opslagplaatsen in het register te itereren.
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
Broncode | Pakket (npm) | API-verwijzing | Monsters
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 Azure Active Directory ondersteuning 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 Azure Container Registry het gebruik van Azure AD met verificatie.
Voorbeelden
In elk voorbeeld wordt ervan uitgenomen dat er een omgevingsvariabele is ingesteld op een tekenreeks met het voorvoegsel en de naam van de aanmeldingsserver, CONTAINER_REGISTRY_ENDPOINT https:// bijvoorbeeld " https://myregistry.azurecr.io ".
Opslagplaatsen asynchroon weergeven
Door de verzameling opslagplaatsen in het register te itereren.
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
Broncode | Pakket (Pypi) | API-verwijzing | Monsters
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 Azure Active Directory ondersteuning voor verificatie. De DefaultAzureCredential gaat ervan uit dat de AZURE_CLIENT_ID AZURE_TENANT_ID AZURE_CLIENT_SECRET omgevingsvariabelen , en zijn ingesteld. Zie Azure Identity environment variables (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 uitgenomen dat er een omgevingsvariabele is ingesteld op een tekenreeks met het voorvoegsel en de naam van de aanmeldingsserver, CONTAINERREGISTRY_ENDPOINT https:// bijvoorbeeld " https://myregistry.azurecr.io ".
Tags asynchroon weergeven
In dit voorbeeld wordt ervan uitgenomen dat het register een opslagplaats hello-world heeft.
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 uitgenomen dat het register een opslagplaats heeft hello-world met een gelabelde v1 afbeelding.
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]
Resources opschonen
Als u een Azure-containerregister wilt ops schonen 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 over het gebruik van de Azure Container Registry-clientbibliotheek om bewerkingen uit te voeren op afbeeldingen en artefacten in uw containerregister.
Zie de API-referentiedocumentatie voor meer informatie:
Meer informatie over de Azure Container Registry REST API.