إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
استخدم هذه المقالة لبدء استخدام مكتبة العميل ل Azure Container Registry. اتبع هذه الخطوات لتجربة مثال التعليمات البرمجية لعمليات مستوى البيانات على الصور والبيانات الاصطناعية.
استخدم مكتبة العميل ل Azure Container Registry من أجل:
- سرد الصور أو البيانات الاصطناعية في سجل
- الحصول على بيانات التعريف للصور والبيانات الملموسة والمستودعات والعلامات
- تعيين خصائص القراءة/الكتابة/الحذف على عناصر التسجيل
- حذف الصور والبيانات الاصطناعية والمستودعات والعلامات
يحتوي Azure Container Registry أيضا على مكتبة إدارة لعمليات مستوى التحكم بما في ذلك إنشاء السجل والتحديثات.
Prerequisites
تحتاج إلى اشتراك Azure وسجل حاوية Azure لاستخدام هذه المكتبة.
لإنشاء سجل حاوية Azure جديد، يمكنك استخدام مدخل Microsoft Azure أو Azure PowerShell أو Azure CLI. فيما يلي مثال باستخدام Azure CLI:
az acr create --name MyContainerRegistry --resource-group MyResourceGroup \ --location westus --sku Basicادفع صورة حاوية واحدة أو أكثر إلى السجل الخاص بك. للحصول على الخطوات، راجع دفع صورتك الأولى إلى سجل حاوية Azure باستخدام Docker CLI.
المفاهيم الرئيسية
- يخزن سجل حاوية Azure صور الحاويةونتائج OCI.
- تتكون الصورة أو القطعة الأثرية من بيانوطبقات.
- يصف البيان الطبقات التي تتكون منها الصورة أو القطعة الأثرية. يتم تحديده بشكل فريد من خلال ملخصه.
- يمكن أيضا وضع علامة على صورة أو قطعة أثرية لإعطائها اسما مستعارا يمكن للإنسان قراءته. يمكن أن تحتوي الصورة أو الأداة على صفر علامات أو أكثر مرتبطة بها، وتحدد كل علامة الصورة بشكل فريد.
- مجموعة من الصور أو القطع الأثرية التي تشترك في نفس الاسم، ولكن لها علامات مختلفة، هي مستودع.
لمزيد من المعلومات، راجع حول السجلات والمستودعات والبيانات الاصطناعية.
بدء الاستخدام
شفرة | المصدرالباقة (NuGet) | مرجع | العينات
لتطوير التعليمات البرمجية لتطبيق .NET التي يمكنها الاتصال بمثيل Azure Container Registry، ستحتاج إلى المكتبة Azure.Containers.ContainerRegistry .
تثبيت الحزمة
قم بتثبيت مكتبة عميل Azure Container Registry ل .NET باستخدام NuGet:
dotnet add package Azure.Containers.ContainerRegistry --prerelease
مصادقة العميل
لكي يتصل تطبيقك بالسجل الخاص بك، ستحتاج إلى إنشاء ملف ContainerRegistryClient يمكنه المصادقة معه. استخدم مكتبة Azure Identity لإضافة دعم معرف Microsoft Entra لمصادقة عملاء Azure SDK مع خدمات Azure المقابلة لهم.
عند تطوير التطبيق وتصحيحه محليا، يمكنك استخدام المستخدم الخاص بك للمصادقة مع السجل الخاص بك. تتمثل إحدى طرق تحقيق ذلك في مصادقة المستخدم باستخدام Azure CLI وتشغيل التطبيق الخاص بك من هذه البيئة. إذا كان تطبيقك يستخدم عميلا تم إنشاؤه للمصادقة معه DefaultAzureCredential، المصادقة بشكل صحيح مع السجل في نقطة النهاية المحددة.
// 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
});
راجع Azure Identity README لمزيد من الأساليب للمصادقة مع DefaultAzureCredential، محليا وفي بيئات النشر. للاتصال بالسجلات في سحابات Azure غير العامة، راجع مرجع واجهة برمجة التطبيقات.
لمزيد من المعلومات حول استخدام معرف Microsoft Entra مع Azure Container Registry، راجع نظرة عامة على المصادقة.
Examples
يفترض كل نموذج أن هناك REGISTRY_ENDPOINT متغير بيئة تم تعيينه على سلسلة تحتوي على https:// البادئة واسم خادم تسجيل الدخول ، على سبيل المثال "https://myregistry.azurecr.io"؛.
تستخدم النماذج التالية واجهات برمجة التطبيقات غير المتزامنة التي ترجع مهمة. تتوفر أيضا واجهات برمجة التطبيقات المتزامنة.
سرد المستودعات بشكل غير متزامن
التكرار من خلال جمع المستودعات في السجل.
// 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);
}
تعيين خصائص البيانات الملموسة بشكل غير متزامن
// 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);
}
حذف الصور بشكل غير متزامن
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();
}
}
بدء الاستخدام
شفرة | المصدرالباقة (Maven) | مرجع | العينات
البيئات المدعومة حاليا
- Java Development Kit (JDK) ، الإصدار 8 أو أحدث.
قم بتضمين العبوة
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-containers-containerregistry</artifactId>
<version>1.0.0-beta.3</version>
</dependency>
مصادقة العميل
توفر مكتبة Azure Identity دعم معرف Microsoft Entra للمصادقة.
تفترض النماذج التالية أن لديك سلسلة نقطة نهاية التسجيل تحتوي على https:// البادئة واسم خادم تسجيل الدخول، على سبيل المثال "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 مع Azure Container Registry، راجع نظرة عامة على المصادقة.
Examples
يفترض كل نموذج وجود سلسلة نقطة نهاية التسجيل تحتوي على https:// البادئة واسم خادم تسجيل الدخول، على سبيل المثال "https://myregistry.azurecr.io"؛.
قائمة أسماء المستودعات
التكرار من خلال جمع المستودعات في السجل.
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();
ContainerRegistryClient client = new ContainerRegistryClientBuilder()
.endpoint(endpoint)
.credential(credential)
.buildClient();
client.listRepositoryNames().forEach(repository -> System.out.println(repository));
تعيين خصائص القطع الملموسة
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));
حذف الصور
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();
});
}
بدء الاستخدام
شفرة | المصدرالحزمة (npm) | مرجع | العينات
البيئات المدعومة حاليا
- إصدارات LTS من Node.js
راجع نهج دعم
تثبيت حزمة @azure/container-registry
قم بتثبيت مكتبة عميل Container Registry ل JavaScript باستخدام npm:
npm install @azure/container-registry
مصادقة العميل
توفر مكتبة Azure Identity دعم معرف Microsoft Entra للمصادقة.
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 مع Azure Container Registry، راجع نظرة عامة على المصادقة.
Examples
يفترض كل نموذج أن هناك CONTAINER_REGISTRY_ENDPOINT متغير بيئة تم تعيينه على سلسلة تحتوي على https:// البادئة واسم خادم تسجيل الدخول ، على سبيل المثال "https://myregistry.azurecr.io"؛.
سرد المستودعات بشكل غير متزامن
التكرار من خلال جمع المستودعات في السجل.
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);
});
تعيين خصائص البيانات الملموسة بشكل غير متزامن
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);
});
حذف الصور بشكل غير متزامن
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);
});
بدء الاستخدام
شفرة | المصدرالحزمة (Pypi) | مرجع | العينات
تثبيت الحزمة
قم بتثبيت مكتبة عميل Azure Container Registry ل Python باستخدام نقطة:
pip install --pre azure-containerregistry
مصادقة العميل
توفر مكتبة Azure Identity دعم معرف Microsoft Entra للمصادقة. يفترض DefaultAzureCredentialتعيين AZURE_CLIENT_ID متغيرات ، AZURE_TENANT_IDوالبيئة AZURE_CLIENT_SECRET . لمزيد من المعلومات، راجع متغيرات بيئة هوية Azure.
# 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
يفترض كل نموذج أن هناك CONTAINERREGISTRY_ENDPOINT متغير بيئة تم تعيينه على سلسلة تحتوي على https:// البادئة واسم خادم تسجيل الدخول ، على سبيل المثال "https://myregistry.azurecr.io"؛.
قائمة العلامات بشكل غير متزامن
يفترض هذا النموذج أن السجل يحتوي على مستودع hello-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 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")
تعيين خصائص البيانات الملموسة بشكل غير متزامن
يفترض هذا النموذج أن السجل يحتوي على مستودع hello-world مع وضع علامة 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.
حذف الصور بشكل غير متزامن
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]
بدء الاستخدام
شفرة | المصدرالباقة (pkg.go.dev) | مرجع واجهة برمجة تطبيقات REST
تثبيت الحزمة
قم بتثبيت مكتبة عميل Azure Container Registry ل Go باستخدام go get:
go get github.com/Azure/azure-sdk-for-go/sdk/containers/azcontainerregistry
مصادقة العميل
عندما تقوم بتطوير تطبيقك وتصحيحه محليا ، يمكنك استخدام azidentity. NewDefaultAzureCredential للمصادقة. نوصي باستخدام هوية مدارة في بيئة إنتاج.
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)
}
}
راجع وثائق azidentity لمزيد من المعلومات حول أساليب المصادقة الأخرى.
Examples
يفترض كل نموذج أن عنوان URL لنقطة نهاية سجل الحاوية هو "https://myregistry.azurecr.io"؛.
قائمة العلامات
يفترض هذا النموذج أن السجل يحتوي على مستودع hello-world.
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)
}
}
}
تعيين خصائص القطع الملموسة
يفترض هذا النموذج أن السجل يحتوي على مستودع hello-world مع وضع علامة 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)
}
حذف الصور
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)
}
}
}
}
}
}
تنظيف الموارد
إذا كنت ترغب في تنظيف سجل حاوية Azure وإزالته، فيمكنك حذف الموارد أو مجموعة الموارد. يؤدي حذف مجموعة الموارد إلى حذف أية موارد أخرى مقترنة بها أيضًا.
الخطوات التالية
في هذا التشغيل السريع، تعرفت على استخدام مكتبة عميل Azure Container Registry لإجراء عمليات على الصور والبيانات الاصطناعية في سجل الحاوية الخاص بك.
لمزيد من المعلومات، راجع الوثائق المرجعية لواجهة برمجة التطبيقات:
تعرف على واجهة برمجة تطبيقات REST لسجل حاوية Azure.