Docker Images verwalten

Um einen Docker-Container zu erstellen, benötigen Sie ein Docker-Image: eine Vorlage, die instanziiert wird, während Docker einen neuen Container erstellt. Um ein neues Image zu erstellen, indem Sie Änderungen an einem bestehenden Image vornehmen, müssen Sie einen Container starten (bauen). 

Das klingt schon nach einem Henne-Ei-Dilemma, nicht wahr? Doch es steckt mehr dahinter. Wenn Sie einen Kubernetes-Cluster betreiben, wollen Sie die Images nicht darin behalten, aber zugleich brauchen Sie sie, um den Cluster hochzufahren. 

Das sind nur einige Herausforderungen, aber wir werden eine Lösung anbieten. In diesem Artikel erfahren Sie, was Docker Hub ist und warum Sie eine Alternative dazu in Betracht ziehen können.

Docker Hub: Die native Lösung

Docker Hub wird verwendet, um Repositories zu erstellen: Speicherplätze für Ihre Docker-Images. Repositories sind der einfachste Weg, um Ihre Images zu organisieren, da Sie für bestimmte Projekte viele davon verwenden können. Mit Docker Hub können Entwickler auf einfachste Weise Docker-Images untereinander austauschen. 

Docker Hub verfügt über eine grafische Benutzeroberfläche, die über einen Browser aufgerufen werden kann. Sie bietet einen Überblick über Ihre Docker-Images, sortiert nach Repository – das normalerweise eine Anwendung darstellt – und Tags. Tags sind wichtig, da sie es Ihnen ermöglichen, Images mit einigen nützlichen Informationen und mit dem Namen des Repositorys, zu dem sie gehören, zu „markieren“. Wenn Sie ein Image mit Ihrem Command Line Tool (CLI) „pushen oder ziehen“, rufen Sie das Image über seinen Tag auf, und der erste Teil des Tags ordnet es einem Repository zu.

Docker Hub: Die Schattenseiten

Docker Hub ist eine sehr einfache Lösung. Abgesehen von der Verwaltung einer großen Menge an Image-Dateien, stehen Entwicklerteams vor weiteren Problemen, die es nicht lösen kann. Um nur einige von ihnen zu nennen:

1. Wenn Sie einen Kubernetes-Cluster betreiben und Ihre Images von einem anderen Cluster in diesen ziehen, verursachen Sie eine große Menge an eingehendem Datenverkehr. Stellen Sie sich vor, Sie testen Ihre Anwendung und müssen sie viele Male ausführen. Da einige Images eine Größe von 1 GB oder mehr haben können, wird Sie dies einiges an Geld kosten. 

2. Obwohl Sie private Repositories auf Docker Hub hosten können und somit einige der Images vor allen Internetnutzern verborgen bleiben, können Sie Ihren Teammitgliedern keine unterschiedlichen Zugriffsrechte einräumen. Das bedeutet, dass Sie möglicherweise einige Bilder unerwünscht zugänglich machen. Besonders heikel wird das Thema, wenn Sie mit einem Partner/Kunden zusammenarbeiten und dessen Team Zugriff auf bestimmte Repositories gewähren wollen.

3. Wie bereits erwähnt, können Sie mit Images Container erstellen, die Sie dann modifizieren, um neue Images zu erstellen. Sie erstellen neue Images auf der Grundlage bestehender Images. Häufig werden die ursprünglichen Images von einem Open-Source-Projekt heruntergeladen. Aber selbst wenn sie von Ihrem Entwicklerteam stammen, können Images Unzulänglichkeiten in ihrem Quellcode enthalten und Data Breaches verursachen. Diese Schleifen werden von jeder nächsten Generation der Images und Container übernommen und können Sicherheitsprobleme auf alle anderen Container übertragen. 

Um dies zu verhindern, bietet Docker Hub Schwachstellenprüfungen (Vulnarability Checks) an, die die Qualität des Quellcodes untersuchen. Leider ist Docker Hub nicht für besonders gute Checks bekannt geworden.

Harbor: Eine Open-Source-Container-Registry

Um die Grenzen von Docker Hub zu überwinden, wurde das Harbor-Projekt ins Leben gerufen. Ursprünglich wurde es von VMware entwickelt, einem Unternehmen, das Software für den Betrieb virtueller Maschinen anbietet, die in verschiedenen Phasen des Entwicklungslebenszyklus eingesetzt werden. Nach einer Weile machte VMware den Quellcode öffentlich zugänglich und das Projekt wurde von der Cloud Native Computing Foundation (CNCF) gehostet, einer Organisation, die der Apache Foundation für Open-Source-Technologien ähnelt. Jetzt ist es der Linux Foundation unterstellt.

Schwachstellen-Scans

Harbor führte bessere Prüfungen auf Sicherheitslücken ein. Ein Schwachstellen-Scanner ist eine Software oder eine SaaS-Anwendung, die Ihren Quellcode (oder Ihre Netzwerkkonfigurationen) durchläuft und dessen Bestandteile mit den bekannten Schwachstellen in ihrer Datenbank abgleicht. Zum Beispiel eine Konfiguration, die eine Tür für einen Hackerangriff öffnet. Dann erstellt sie für Sie einen Bericht, der auf solche Schwachstellen hinweist.

Harbor erlaubt Ihnen standardmäßig die Verwendung eines oder beider Open-Source-Schwachstellen-Scanner Trivy und Clair.

Rollen und Berechtigungen

In Harbor haben Sie mehr Spielraum, wenn es um Benutzerrollen und Berechtigungen geht.

Repositories sind in Projekten organisiert. Benutzer müssen diesen hinzugefügt werden, um die Repositories nutzen zu können. Bei der Zuweisung von Benutzern zu einem Projekt können Sie ihnen eine der vier Arten von Rollen zuweisen, die die Rechte festlegen, die sie in dem Projekt haben.

Funktionen für kommerziell vertriebene Bilder

Softwareanbieter können Harbor nutzen, um die Bereitstellung von Software an Kunden zu vereinfachen. Harbor verfügt über einige Funktionen, die helfen, diesen Prozess zu automatisieren und effizienter zu gestalten.

Bildkomprimierung

Wenn Sie ein Image von Ihrem PC zu Harbor übertragen, wird das Image auf die Hälfte seiner Größe komprimiert, um Speicherkosten zu sparen. Außerdem kann der Superadmin in Harbor Projektkontingente festlegen, so dass nur ein bestimmtes Speichervolumen für die Instanz zur Verfügung steht.

Roboter-Konten

Um Ihre Entwicklungspipeline zu automatisieren, müssen Sie in der Lage sein, Ihre Images über die API zu verwalten. Die REST-API von Docker Hub ist für eine Reihe von Einschränkungen bekannt, darunter eine Begrenzung der Anzahl der Anfragen. Dies kann Ihre gesamten Deployments für Stunden zum Stillstand bringen.

Single Sign-on

Dies ist kein wirklicher Vorteil von Harbor, aber es ist erwähnenswert.

Wenn Sie mit Ihrem CLI Images von einem privaten Repository abrufen oder dorthin verschieben möchten, müssen Sie sich bei dem Repository anmelden. Wenn Sie Docker Hub verwenden, benutzen Sie dafür Ihre Docker-ID. Wenn Sie Harbor verwenden, können Sie sich einen weiteren Eintrag in Ihrem Passwort-Tool sparen, indem Sie ein Konto bei einem föderierten Identitätsanbieter wie Google oder Azure benutzen.

Harbor-basierte Registry-Anbieter

Eine beliebte Open-Source-Technologie wird oft von SaaS-Anbietern nachgebaut, die sie um ein paar nette Funktionen erweitern und dann gegen Geld verkaufen. Der Grund für die Popularität dieser Lösungen ist, dass Sie bei der Verwendung von Harbor immer noch viel zu tun haben, z. B. die Installation von Harbor und die Einrichtung eines separaten Clusters. Eine Cloud-Plattform erledigt das für Sie, wenn Sie dafür etwas bezahlen.  

Außerdem ist die native Lösung, Docker Hub, nicht kostenlos, weshalb andere Anbieter versuchen, denselben Dienst zu einem günstigeren Preis anzubieten.

Abgesehen von Docker Hub zählt Amazon ECR als Hauptkonkurrent von Harbor, das mit Vorsprung von zwei Jahren veröffentlicht wurde, aber nie den gleichen Bekanntheitsgrad erlangte.

Fazit

Wir hoffen, dass wir etwas Licht in die Kompliziertheit und die Lösungen rund um die Verwaltung von Docker-Images gebracht haben. 

Container-Repository-Tools, selbst so einfache wie Harbor, erfordern einen erfahrenen Spezialisten, einen DevOps-Ingenieur. Wenn Sie jemanden finden möchten, der mit Docker-Images, Docker im Allgemeinen und/oder Kubernetes-Clustern gearbeitet hat, wenden Sie sich an JCFINCH. Wir haben bestimmt geeignete Kandidaten in unserer Datenbank.