Ingenieurwesen
Docker-Layer-Caching ist nicht das, was Sie denken
Die meisten CI-Docker-Caching-Setups verbringen mehr Zeit mit der Übertragung des Caches, als sie durch dessen Verwendung sparen.
{Autor} · {Rolle} · {Datum} · {Minuten} {MinutenLabel}
Die Standardempfehlung besteht darin, Ihren Layer-Cache mit „cache-to“ zu exportieren und ihn mit „cache-from“ zu importieren. Es funktioniert. Bei großen Bildern handelt es sich häufig auch um einen Nettoverlust, und die Timing-Daten machen das deutlich, wenn man genau hinschaut.
Die Übertragung ist das Problem
Jeder Job exportiert den Cache am Ende und importiert ihn am Anfang. Bei einem Multi-Gigabyte-Layer-Cache kann dieser Roundtrip die Build-Zeit überschreiten, die er einsparen sollte. Der Build-Schritt wird schneller und der Job langsamer.
Die Lösung besteht darin, das Verschieben zu stoppen
Eine persistente BuildKit-Instanz behält den Cache auf ihrer eigenen Festplatte, wo BuildKit ihn bereits haben möchte. Ihr Job verbindet, baut, löst sich. Es gibt keinen Exportschritt, da nichts zu exportieren ist.
Ihr nächster Build könnte doppelt so schnell sein — zum halben Preis
Kostenlos starten. Der Wechsel zurück ist dieselbe eine Zeile — auch dieses Diff veröffentlichen wir.