GC: --delete-untagged entfernen (zerstoerte Multi-Arch-Images)

registry garbage-collect --delete-untagged loescht bei Multi-Arch-Images
die per-Architektur-Manifeste, die nur ueber die Manifest-Liste (Index)
referenziert sind. Die Liste/der Tag bleibt, die Kind-Manifeste sind weg
-> beim Pull "manifest unknown".

Reproduziert: zwei Multi-Arch-Images, garbage-collect --delete-untagged
markiert die Kind-Manifeste als "eligible for deletion" und loescht sie;
danach schlaegt "skopeo copy --all" mit manifest unknown fehl. Ohne das
Flag bleiben die Images intakt.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-09 12:41:31 +02:00
parent cd5beeedd3
commit b24bd96917
+5 -1
View File
@@ -534,9 +534,13 @@ def garbage_collect():
# Entfernt Blobs/Layer, die von keinem Manifest mehr referenziert werden
# (z. B. nach dem Loeschen von Tags). Nutzt die registry-Binary direkt auf
# dem gemounteten Speicher - kein Docker-Socket noetig.
#
# WICHTIG: KEIN --delete-untagged! Dieses Flag loescht bei Multi-Arch-Images
# die per-Architektur-Manifeste (die nur ueber die Manifest-Liste referenziert
# sind) und macht die Images damit unbrauchbar ("manifest unknown" beim Pull).
try:
result = subprocess.run(
["registry", "garbage-collect", GC_CONFIG, "--delete-untagged"],
["registry", "garbage-collect", GC_CONFIG],
capture_output=True,
text=True,
timeout=600,