Share via


Azure kapsayıcı kayıt defterinden görüntüleri otomatik olarak temizleme

Geliştirme iş akışının bir parçası olarak Bir Azure kapsayıcı kayıt defteri kullandığınızda, kayıt defteri kısa bir süre sonra gerekli olmayan görüntüler veya diğer yapıtlarla hızla dolabilir. Belirli bir süreden eski olan veya belirtilen ad filtresiyle eşleşen tüm etiketleri silmek isteyebilirsiniz. Birden çok yapıtı hızla silmek için, bu makalede isteğe bağlı veya zamanlanmış ACR Görevi olarak çalıştırabileceğiniz komut tanıtılıracr purge.

Komut acr purge şu anda GitHub'daki acr-cli deposundaki kaynak koddan oluşturulmuş bir genel kapsayıcı görüntüsünde ()mcr.microsoft.com/acr/acr-cli:0.5 dağıtılmıştır. acr purge şu anda önizleme aşamasındadır.

Bu makaledeki ACR görev örneklerini çalıştırmak için Azure Cloud Shell'i veya Azure CLI'nın yerel yüklemesini kullanabilirsiniz. Yerel olarak kullanmak isterseniz, sürüm 2.0.76 veya üzeri gereklidir. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.

Uyarı

acr purge Komutunu dikkatli kullanın; silinen görüntü verileri KURTARıLAMAZ. Bildirim özetine göre görüntü çeken sistemleriniz varsa (görüntü adının aksine), etiketlenmemiş görüntüleri temizlememelisiniz. Etiketlenmemiş görüntülerin silinmesi, bu sistemlerin kayıt defterinizdeki görüntüleri çekmesini engeller. Bildirime göre çekmek yerine, önerilen en iyi yöntem olan benzersiz bir etiketleme şemasını benimsemeyi göz önünde bulundurun.

Azure CLI komutlarını kullanarak tek görüntü etiketlerini veya bildirimlerini silmek istiyorsanız bkz . Azure Container Registry'de kapsayıcı görüntülerini silme.

Purge komutunu kullanma

acr purge Kapsayıcı komutu, bir ad filtresiyle eşleşen ve belirtilen süreden daha eski olan bir depodaki etikete göre görüntüleri siler. Varsayılan olarak, temel alınan bildirimler ve katman verileri değil, yalnızca etiket başvuruları silinir. Komutun bildirimleri silme seçeneği de vardır.

Not

acr purgeözniteliğinin olarak ayarlandığı falsebir görüntü etiketini veya depoyu write-enabled silmez. Bilgi için bkz . Azure kapsayıcı kayıt defterinde kapsayıcı görüntüsünü kilitleme.

acr purge, bir ACR Görevinde kapsayıcı komutu olarak çalışacak şekilde tasarlanmıştır, böylece görevin çalıştığı kayıt defterinde otomatik olarak kimlik doğrulaması yapar ve orada eylemler gerçekleştirir. Bu makaledeki görev örnekleri, tam kapsayıcı görüntüsü komutu yerine komut diğer adını kullanıracr purge.

Önemli

  • komutunu yürütmek acr purge için standart komut şudur: az acr run --registry <YOUR_REGISTRY> --cmd 'acr purge --optional parameter' /dev/null.
  • ACR Temizleme'yi kullanmak için tam acr purge komutu çalıştırmanızı öneririz. Örneğin, olarak acr purge --helpaz acr run --registry <YOUR_REGISTRY> --cmd 'acr purge --help' /dev/nullkomutunu çalıştırın.

komutunu çalıştırırken acr purgeen azından aşağıdakileri belirtin:

  • --filter - Kayıt defterindeki görüntüleri filtrelemek için bir depo adı normal ifadesi ve etiket adı normal ifadesi . Örnekler: --filter "hello-world:.*" depodaki hello-world tüm etiketleri eşleştirir, --filter "hello-world:^1.*" depodan hello-world başlayarak etiketlerle 1 eşleşir ve --filter ".*/cache:.*" ile biten /cachedepolardaki tüm etiketlerle eşleşir. Birden çok --filter parametre de geçirebilirsiniz.
  • --ago - Görüntülerin silindiği süreyi belirtmek için Go stilinde bir süre dizesi . Süre, her biri bir birim soneki olan bir veya daha fazla ondalık sayıdan oluşan bir diziden oluşur. Geçerli zaman birimleri günler için "d", saat için "h" ve dakikalar için "m" içerir. Örneğin, --ago 2d3h6m en son iki günden, 3 saat ve 6 dakika önce değiştirilmiş tüm filtrelenmiş görüntüleri seçer ve --ago 1.5h en son 1,5 saatten fazla önce değiştirilmiş görüntüleri seçer.

acr purge birkaç isteğe bağlı parametreyi destekler. Bu makaledeki örneklerde aşağıdaki ikisi kullanılmıştır:

  • --untagged - İlişkili etiketleri olmayan tüm bildirimlerin (etiketsiz bildirimler) silindiğini belirtir. Bu parametre, zaten silinmiş olan etiketlere ek olarak etiketlenmemiş bildirimleri de siler.
  • --dry-run - Hiçbir verinin silinmediğini belirtir, ancak çıkış, komutun bu bayrak olmadan çalıştırılmasıyla aynıdır. Bu parametre, korumak istediğiniz verileri yanlışlıkla silmediğinden emin olmak için temizleme komutunu test etmek için kullanışlıdır.
  • --keep - Silinecek etiketlerin en son x sayısının korunduğunu belirtir. En son etiketler, etiketin son değiştirme zamanına göre belirlenir.
  • --concurrency - Eşzamanlı olarak işlenmek üzere bir dizi temizleme görevi belirtir. Bu parametre sağlanmazsa varsayılan bir değer kullanılır.

Not

Filtre --untagged , filtreye --ago yanıt vermiyor. Ek parametreler için komutunu çalıştırın acr purge --help.

acr purge, akışa alınan ve daha sonra almak üzere kaydedilen çalıştırma değişkenleri ve görev çalıştırma günlükleri de dahil olmak üzere ACR Görevleri komutlarının diğer özelliklerini destekler.

İsteğe bağlı görevde çalıştırma

Aşağıdaki örnek, isteğe bağlı olarak komutunu çalıştırmak acr purge için az acr run komutunu kullanır. Bu örnek, kayıt defterimdeki hello-world depoda 1 günden daha önce değiştirilmiş olan tüm görüntü etiketlerini ve bildirimleri ve etiketlenmemiş tüm bildirimleri siler. Kapsayıcı komutu bir ortam değişkeni kullanılarak geçirilir. Görev bir kaynak bağlamı olmadan çalışır.

# Environment variable for container command line
PURGE_CMD="acr purge --filter 'hello-world:.*' \
  --untagged --ago 1d"

az acr run \
  --cmd "$PURGE_CMD" \
  --registry myregistry \
  /dev/null

Zamanlanmış görevde çalıştırma

Aşağıdaki örnek, günlük zamanlanmış ACR görevi oluşturmak için az acr task create komutunu kullanır. Görev, depoda hello-world 7 günden daha önce değiştirilmiş etiketleri temizler. Kapsayıcı komutu bir ortam değişkeni kullanılarak geçirilir. Görev bir kaynak bağlamı olmadan çalışır.

# Environment variable for container command line
PURGE_CMD="acr purge --filter 'hello-world:.*' \
  --ago 7d"

az acr task create --name purgeTask \
  --cmd "$PURGE_CMD" \
  --schedule "0 0 * * *" \
  --registry myregistry \
  --context /dev/null

Zamanlayıcı tetikleyicisinin yapılandırıldığını görmek için az acr task show komutunu çalıştırın.

Çok sayıda etiketi ve bildirimi temizleme

Çok sayıda etiketin ve bildirimin temizlenmesi birkaç dakika veya daha uzun sürebilir. Binlerce etiketi ve bildirimi temizlemek için, komutun isteğe bağlı görev için varsayılan zaman aşımı süresi olan 600 saniyeden uzun veya zamanlanmış görev için 3600 saniye çalışması gerekebilir. Zaman aşımı süresi aşılırsa, etiketlerin ve bildirimlerin yalnızca bir alt kümesi silinir. Büyük ölçekli temizleme işleminin tamamlandığından emin olmak için parametresini --timeout geçirerek değeri artırın.

Örneğin, aşağıdaki isteğe bağlı görev 3600 saniyelik bir zaman aşımı süresi (1 saat) ayarlar:

# Environment variable for container command line
PURGE_CMD="acr purge --filter 'hello-world:.*' \
  --ago 1d --untagged"

az acr run \
  --cmd "$PURGE_CMD" \
  --registry myregistry \
  --timeout 3600 \
  /dev/null

Örnek: Kayıt defterindeki birden çok deponun zamanlanmış temizlemesi

Bu örnek, bir kayıt defterindeki birden çok depoları düzenli aralıklarla temizlemek için kullanma acr purge işleminde yol gösterir. Örneğin, ve samples/devimage2 depolarına görüntü samples/devimage1 gönderebilen bir geliştirme işlem hattınız olabilir. Dağıtımlarınız için geliştirme görüntülerini düzenli aralıklarla bir üretim deposuna aktardığınızdan artık geliştirme görüntülerine ihtiyacınız kalmaz. Haftalık olarak, önümüzdeki haftanın çalışmalarına samples/devimage1 hazırlık olarak ve samples/devimage2 depolarını temizlersiniz.

Temizlemenin önizlemesini görüntüleme

Verileri silmeden önce parametresini kullanarak --dry-run isteğe bağlı temizleme görevi çalıştırmanızı öneririz. Bu seçenek, herhangi bir veri kaldırmadan komutun temizleyecekleri etiketleri ve bildirimleri görmenize olanak tanır.

Aşağıdaki örnekte, her depodaki filtre tüm etiketleri seçer. parametresi, --ago 0d depolardaki filtrelerle eşleşen tüm yaşlardaki görüntülerle eşleşir. Seçim ölçütlerini senaryonuz için gerektiği gibi değiştirin. --untagged parametresi, etiketlerin yanı sıra bildirimlerin de silindiğini gösterir. Kapsayıcı komutu, bir ortam değişkeni kullanılarak az acr run komutuna geçirilir.

# Environment variable for container command line
PURGE_CMD="acr purge \
  --filter 'samples/devimage1:.*' --filter 'samples/devimage2:.*' \
  --ago 0d --untagged --dry-run"

az acr run \
  --cmd "$PURGE_CMD" \
  --registry myregistry \
  /dev/null

Seçim parametreleriyle eşleşen etiketleri ve bildirimleri görmek için komut çıktısını gözden geçirin. komutu ile --dry-runçalıştırıldığından hiçbir veri silinmez.

Örnek çıkış:

[...]
Deleting tags for repository: samples/devimage1
myregistry.azurecr.io/samples/devimage1:232889b
myregistry.azurecr.io/samples/devimage1:a21776a
Deleting manifests for repository: samples/devimage1
myregistry.azurecr.io/samples/devimage1@sha256:81b6f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e788b
myregistry.azurecr.io/samples/devimage1@sha256:3ded859790e68bd02791a972ab0bae727231dc8746f233a7949e40f8ea90c8b3
Deleting tags for repository: samples/devimage2
myregistry.azurecr.io/samples/devimage2:5e788ba
myregistry.azurecr.io/samples/devimage2:f336b7c
Deleting manifests for repository: samples/devimage2
myregistry.azurecr.io/samples/devimage2@sha256:8d2527cde610e1715ad095cb12bc7ed169b60c495e5428eefdf336b7cb7c0371
myregistry.azurecr.io/samples/devimage2@sha256:ca86b078f89607bc03ded859790e68bd02791a972ab0bae727231dc8746f233a

Number of deleted tags: 4
Number of deleted manifests: 4
[...]

Temizlemeyi zamanlama

Kuru çalıştırmayı doğruladıktan sonra temizleme işlemini otomatikleştirmek için zamanlanmış bir görev oluşturun. Aşağıdaki örnek, önceki temizleme komutunu çalıştırmak için Pazar günü saat 1:00 UTC'de haftalık bir görev zamanlar:

# Environment variable for container command line
PURGE_CMD="acr purge \
  --filter 'samples/devimage1:.*' --filter 'samples/devimage2:.*' \
  --ago 0d --untagged"

az acr task create --name weeklyPurgeTask \
  --cmd "$PURGE_CMD" \
  --schedule "0 1 * * Sun" \
  --registry myregistry \
  --context /dev/null

Zamanlayıcı tetikleyicisinin yapılandırıldığını görmek için az acr task show komutunu çalıştırın.

Sonraki adımlar

Azure Container Registry'de görüntü verilerini silmeye ilişkin diğer seçenekler hakkında bilgi edinin.

Görüntü depolama hakkında daha fazla bilgi için bkz . Azure Container Registry'de kapsayıcı görüntüsü depolama.