kalafoto - stock.adobe.com
Container-Images kostenlos mit container-diff vergleichen
container-diff ist ein Tool, das für Container-Images für Sie automatisch analysiert. Damit vermeiden Sie unangenehme Überraschungen und sparen dabei Zeit und Kosten.
Container verändern die Art und Weise, wie Unternehmen Anwendungen entwickeln, implementieren und verwalten. Sie ermöglichen es IT-Teams, einzelne Funktionen zu erstellen, die gemeinsam eine flexible, zusammengesetzte Anwendung ergeben. DevOps konzentriert sich auf Container – aber das bedeutet nicht, dass alles einfacher ist.
Entwickler und Betriebsmitarbeiter müssen Container oft untersuchen, um zu sehen, wie sie sich in den verschiedenen Versionen unterscheiden. Obwohl die meisten DevOps-Tools Versionskontrollsysteme enthalten, gibt es schnelle und einfache Tools, welche die Unterschiede zwischen Containern tiefgreifend vergleichen.
DevOps-Teams benötigen ein Tool, mit dem Software, die Dokumente mit Containerbeschreibungen auswertet, um potenzielle Auswirkungen auf die Produktionsumgebung zu simulieren, insbesondere solche wie das Aufblähen von Docker-Containern und Ressourcenverlusten.
Container-diff ist ein GitHub-Projekt, das Google im Jahr 2017 ins Leben gerufen hat. Google hat den offiziellen Support für das Tool eingestellt, aber es wird weiterhin von einer Gruppe von Open-Source-Mitwirkenden unterstützt. Zum Zeitpunkt der Veröffentlichung erfolgte die letzte Aktualisierung im Juni 2021.
Sie können das Tool einfach herunterladen und es erfordert keine spezielle Installation oder Anpassung. Sie können es zu jedem Linux-, Windows- oder macOS-System hinzufügen.
So benutzen Sie container-diff
Container-diff bietet eine Reihe verschiedener Funktionen, die Sie alle über die Kommandozeile (Command Line Interface, CLI) aufrufen. Verwenden Sie den Befehl container-diff, gefolgt von verschiedenen Flags, um zu definieren, welche Unterschiede zwischen den Images wichtig für Sie sind. Der Befehl zeigt an, wie sich Änderungen an einer Docker-Datei auf den Docker-Container selbst auswirken.
Die wichtigsten Flags sind analyze und diff. Das analyze-Flag verwenden Sie im Bezug auf einen einzelnen Container. Wenn Sie ihn als container-diff analyze <Container-Image> ausführen, wobei <Container-Image> eine ID, ein Tarball oder eine Repository-URL sein kann, gibt das Tool die Größe des Containers zurück. Administratoren haben mehrere zusätzliche Modifikatoren zur Verfügung, darunter die folgenden:
- --type=apt gibt an, welche Pakete auf Betriebssystemebene im Image installiert sind.
- --type=file berichtet über jede Datei im Image, zusammen mit ihrer Größe.
- --type=history gibt die Befehle aus, die Docker-Schichten innerhalb des Images erzeugen, was eine grobe Version des Dockerfiles widerspiegelt.
- --type=node gibt aus, welche Node-Pakete installiert sind.
- --type=pip meldet, welche Python-Pakete installiert sind.
- --type=rpm extrahiert Pakete aus der RPM-Datenbank.
Es gibt mehrere zusätzliche Modifikatoren, die festlegen, wie die Ausgabe aussehen soll.
Während der Befehl container-diff analyze auf einer relativ hohen Ebene nützlich ist, bietet container-diff diff weitreichendere Möglichkeiten.
Der allgemeine Befehl hat hier die folgende Form:
container-diff diff --type=<option> +--
Wenn Sie zum Beispiel Änderungen auf Betriebssystemebene untersuchen möchten, erstellen Sie mit dem nächsten Befehl einen Bericht über die Betriebssystemdateien, ausschließlich für myimage:2:
container-diff diff --type=size --type=apt myimage:1 myimage:2
In seiner einfachsten Form wird dieser Bericht wie folgt aussehen:
-----File-----
These entries have been added to myapp/myimage:1:
FILE SIZE
/app/node_modules/fsevents 186.2K
These entries have been deleted from myapp/myimage:1:
FILE SIZE
/app/.npm/_cacache/index-v5/ce/9f/58654f1 310B
These entries have been changed between myapp/myimage:1: and myapp/myimage:2:
FILE SIZE1 SIZE2
/app/package-lock.json 554.6K 554.6K
Wie beim analyze-Flag liefern die gleichen Modifikatoren Berichte über die Unterschiede zwischen zwei bestimmten Containern. Zusätzliche Modifikatoren können das Ausgabeformat des Berichts definieren und ein lesbares Format für die Zielgruppe bereitstellen.
Administratoren kodieren die Befehle als Vorlagen, was Zeit und Mühe spart.
container-diff zur Fehlersuche verwenden
Ein weiteres Einsatzgebiet ist die Fehlersuche in Containern, was selten eine einfache Aufgabe ist. Wenn die aktuelle Version Ihrer Anwendung nicht funktioniert, aber eine frühere Version schon, finden Sie das mit dem container-diff und dem Flag diff --type=file und dem Modifikator ausführen, um das Problem zu identifizieren.
container-diff diff --type=file myimage:1 myimage:2
Dies erstellt einen Bericht mit einer Liste von Dateien, die sich nur in myimage:2 befinden. Dies hilft Administratoren, das neue Modul zu finden, das Probleme verursacht. Mit dem Flag file container-diff vergleichen Sie die Dateien innerhalb der beiden Images weiter.
container-diff diff myimage:1 myimage:2 --type=file --filename=<pathtofile>
Schließlich erstellen Sie mit container-diff eine Vorschau auf die Auswirkungen des neuen Containers auf die Umgebung.
Eine Aktualisierung des Betriebssystems im Node-Image könnte beispielsweise keine negativen Auswirkungen haben, aber es ist besser, wenn die IT-Administratoren dies im Voraus wissen. Um die Änderungen zu überprüfen, wechselt dieser Beispielbefehl von Bullseye zu Bullseye Slim unter Debian 12. Dies hilft Teams, Probleme in der Betriebsumgebung zu vermeiden. Verwenden Sie dazu den Befehl container-diff wie folgt:
container-diff --type=size --type=apt --type=node node:17-bullseye node:17-bullseye-slim
Der Befehl container-diff liefert einen detaillierten Bericht über den Größenunterschied des resultierenden Containers sowie über die vorhandenen Betriebssystem- und Knotenpakete. Auf der Grundlage dieses Berichts können die Teams besser entscheiden, welche Änderungen sie vornehmen wollen.
Container-diff ist ein nützliches, leichtgewichtiges Tool, für dessen Ausführung keine spezielle Umgebung erforderlich ist, was es für Entwickler und Betriebsmitarbeiter zu einem nützlichen Werkzeug macht.
Container-diff ist in einem öffentlichen GitHub-Repository verfügbar.