Eine Container Registry ist ein Daten-Repository (oder mehrere Repositorys), das Container-Images für die Speicherung und den Zugriff bereitstellt. Container-Images sind unveränderliche statische Dateien, die ausführbaren Code enthalten und isoliert auf der IT-Infrastruktur ausgeführt werden.
Ein entscheidender Vorteil von Container-Registrierungsstellen ist die einfache Anbindung an Container-Orchestrierungssysteme oder -Plattformen wie Kubernetes und Docker.
Während der containerbasierten Anwendungsentwicklung können Teams Container-Registries auch als DevOps nutzen und so eine optimierte Integration mit Continuous Integration (CI) Workflows und Continuous Delivery (CD) Workflows ermöglichen. Beide Workflows gehören zu den Kernaktivitäten der Softwareentwicklung. CI und CD basieren beide auf Automatisierung und sind für häufige Codeänderungen ausgelegt. Sie unterscheiden sich vor allem darin, dass CI den Code für eine eventuelle Veröffentlichung vorbereitet, während CD die tatsächliche Veröffentlichung des Codes betrifft. Container-Registries unterstützen beide Workflows.
Es gibt zwei Arten von Container Registries:
Eine Container Registry speichert Container-Images und ermöglicht es Benutzern, Images in die Registry hochzuladen (ein Prozess, der als „Pushing“ bezeichnet wird) oder sie auf ein anderes System herunterzuladen (ein Prozess, der als „Pulling“ bezeichnet wird).
Ein Container Registry kann allein oder in Verbindung mit anderen Container Registries verwendet werden. Wenn mehrere Container zu einer einzigen operativen Einheit für die Bereitstellung von Cloud-Diensten zusammengefasst werden, ähnelt deren Funktionalität einem Ökosystem, dessen Bewohner eng zusammenarbeiten, um ein gemeinsames Ergebnis zu erzielen.
Container Registries verwenden Objektspeicher, um Metadaten über Container-Images zu manifestieren. Dies bietet zwar eine Möglichkeit, solche Metadaten erfolgreich zu übertragen, ist aber von Natur aus begrenzt. Bei Daten, die beispielsweise mehrere Images enthalten können, ist die Anzahl der verfügbaren Listing-Tags begrenzt.
Abhängigkeitscontainer sind eine weitere Speichermethode. Sie ermöglichen die Verwaltung, Registrierung und Auflösung von Abhängigkeiten in einer Anwendung. Im Kontext der Programmierung beschreiben Abhängigkeiten Situationen, in denen ein Objekt oder ein Prozess auftreten muss, bevor ein anderes Objekt wie angeordnet funktionieren kann.
Solche Abhängigkeiten werden von Abhängigkeitscontainern verwaltet, die das Testen vereinfachen, die Skalierbarkeit verbessern und die Notwendigkeit der Codekopplung (eine zu starke Abhängigkeit zwischen den programmierten Objekten) minimieren, die zu Fehlern und Versionskontrollproblemen führen kann.
Angesichts des dringenden und anhaltenden Bedarfs an Online-Sicherheit ist die Authentifizierung von Personen, denen Zugriff auf Repositorys gewährt wird, von entscheidender Bedeutung. Das hängt von einer Reihe von Berechtigungen ab, die speziell für dieses Container Registry gelten. Berechtigungen legen fest, wer berechtigt ist, Computerressourcen aus einer Container Registry zu nutzen.
Das Konzept der Laufzeiten ist von entscheidender Bedeutung. Bei Container-Laufzeiten handelt es sich um Software, die den Betrieb von Containern innerhalb eines Hostsystems ermöglicht. Laufzeiten verwenden eine Reihe von Schritten zum Erstellen von Containern. Diese Schritte umfassen den gesamten Prozess der Erstellung von Containern und der Initialisierung ihrer Umgebung nach den Vorgaben eines Container-Images, das die App und ihre Abhängigkeiten enthält.
Nachdem die Container erstellt wurden, bleibt die Laufzeit aktiv beteiligt – sie verwaltet die Container-Lebenszyklen, verfolgt ihre kontinuierliche Funktionsfähigkeit und entfernt ihre Ressourcen, wenn sie nicht mehr benötigt werden.
Container-Registries unterstützen auch den Lastausgleich. Beim containernativen Lastausgleich wird der Balancer-Datenverkehr direkt an die Bereiche weitergeleitet, die diesen Datenverkehr empfangen sollen. Auf diese Weise arbeiten Container-Registries Hand in Hand mit Load Balancern, damit der Datenverkehr nicht durch eine zusätzliche Netzwerkschleife geleitet werden muss.
Container-Registries bieten zahlreiche Vorteile, darunter die folgenden:
Container Registry bieten mehr betriebliche Klarheit, da sie einen dedizierten Ort für die Aufbewahrung von Images zur langfristigen Speicherung haben. Produktionsdesigner und Softwareentwickler haben oft mit einer Überfülle an Assets zu kämpfen. Container-Registries entschärfen dieses Problem, indem sie die Assets auf einen einzigen Standort beschränken.
Container Registry helfen dabei, Leistungsverzögerungen zu vermeiden, die auftreten können, wenn der genaue Speicherort von Images nicht bekannt ist – insbesondere in Zeiten hoher Priorität. Container Registry lösen dieses Problem, indem sie einen Bestand bereitstellen, der jederzeit überprüft und bestätigt werden kann.
Registries schaffen eine Single-Source-of-Truth (SSOT) für jede Komponente oder Anwendung, sodass immer Transparenz über die Zusammensetzung dieser Komponente oder Anwendung besteht. Durch die Verwendung von Container-Registries wird sichergestellt, dass die letzte Iteration für die Verwendung oder Replikation bereit ist, um eine optimale Versionskontrolle zu gewährleisten.
Container-Registries bieten erweiterte Sicherheitsmaßnahmen für Bilder. Zugriffsprotokolle tragen dazu bei, dass Bilder aus Sicherheitsgründen geschützt sind. In der Zwischenzeit können Benutzer durch das Scannen von Sicherheitslücken tief in ihre Bilder blicken und versteckte Probleme in ihnen erkennen.
Bei den folgenden Aktivitäten werden Container-Registries in großem Umfang verwendet:
Softwareentwicklung ist der primäre Anwendungsfall für Container-Registries. Deshalb wurden sie überhaupt erst geschaffen – um Software-Entwickler zu unterstützen, indem sie einen Arbeitsbereich für die Lagerung, den Zugriff und die gemeinsame Nutzung von Images bereitstellen.
Private Container-Registries werden in der Regel als notwendige Infrastruktur für Unternehmen betrachtet, die Softwareanwendungen intern entwickeln und bereitstellen. Private Registries geben Benutzern ein höheres Maß an Kontrolle über Software-Lieferketten.
Viele Container-Registries unterstützen Benutzer von Microservices, indem sie den Prozess des Aufsuchens und Herstellens einer Verbindung mit bestimmten Microservices in einem Container-Cluster verdeutlichen. Solche Registries bieten Domain Name System-Services an, die Images Namen und virtuelle IPs zuordnen.
Container-Registries unterstützen die schnelle Iteration von Apps, da sie modular und kompakt sind. Andere Vorteile der Bereitstellung sind die Portabilität und Konsistenz der Registries.
Container Registries werden für spezielle wissenschaftliche Zwecke angepasst, z. B. zur Unterstützung genetischer Daten und zur Förderung der Genomforschung. Forschungsergebnisse können problemlos in anderen Formaten reproduziert werden, sodass wichtige Codes und Artefakte gemeinsam genutzt werden können.
Es gibt zwei Hauptanbieter von Container-Orchestrierung, die die Verwendung von Container-Registries dominieren:
Docker ist ein Container-Orchestrierungssystem, das 2013 entwickelt und eingeführt wurde, um die Komplexität der Erstellung, Bereitstellung und Ausführung von Apps zu reduzieren. Docker hat in letzter Zeit an Popularität gewonnen, da es als einfache Möglichkeit angesehen wird, leichte, tragbare und in sich geschlossene Container zu erstellen, die trotz der Infrastruktur auf jeder Plattform ausgeführt werden können. Dieser Ruf für eine einfache Bedienung hat dazu beigetragen, dass Docker zu einer bevorzugten Option für diejenigen geworden ist, die Anwendungen für künstliche Intelligenz (KI) und maschinelles Lernen (ML) bereitstellen.
Aus dem gleichen Grund bieten Docker-Container höchste Portabilität, da sie unabhängig von der Infrastruktur von einem Rechner auf einen anderen verschoben werden können. Auch hier sehen wir einen Vorteil darin, dass es mit Docker relativ einfach ist, KI- und ML-Apps in alternativen Umgebungen wie lokalen Rechnern, Edge-Geräten oder Cloud-Servern einzuführen.
Kubernetes ist eine Open Source-Plattform für die Containerorchestrierung. Kubernetes wurde ebenfalls 2013 ins Leben gerufen und nach dem griechischen Begriff für „Pilot“ benannt. Kubernetes wird verwendet, um verschiedene Softwareprozesse wie Verwaltung, Bereitstellung und Skalierung zu automatisieren.
In einem Kubernetes Service sind ein oder mehrere Computer (die entweder virtuelle Maschinen oder Bare Metal Servers sein können) in einem Cluster miteinander verbunden, in dem Container-Workloads unterschiedlicher Größe und Art ausgeführt werden können. Kubernetes wird häufig mit Helm-Diagrammen bereitgestellt. Dabei handelt es sich um Dateisammlungen, mit denen die verschiedenen Ressourcen eines Kubernetes-Clusters beschrieben und diese kombinierten Ressourcen dann als App verpackt werden.
Kubernetes ermöglicht die Verwendung von containerisierten ML-Anwendungen und eine einfache Skalierung und unterstützt ML-Frameworks und -Tools. Kubernetes kann auch als Plattform für KI-Trainings-Workloads verwendet werden.
Docker und Kubernetes ähneln sich in vielerlei Hinsicht. Sie unterscheiden sich jedoch in ihrem Umfang, da Docker im Kern eine Laufzeit für Container ist, während Kubernetes eine vollständige Plattform ist, die die Ausführung und Verwaltung von Containern über mehrere Container-Laufzeiten ermöglicht. Um den Unterschied zwischen den beiden zu verdeutlichen, sollten Sie bedenken, dass Kubernetes so groß ist, dass Docker nur eine der zahlreichen Container-Laufzeiten ist, die Kubernetes unterstützt.
Der Markt für Anbieter von Container Registry entwickelt sich ständig weiter, und es gibt immer wieder neue Akteure, die in den Markt eintreten oder ihn verlassen. Die hier aufgeführten Anbieter haben sich jedoch einen dauerhaften Ruf auf diesem Markt aufgebaut:
Red Hat OpenShift on IBM Cloud ist eine vollständig verwaltete OpenShift Container Platform (OCP).
Container-Lösungen führen Container-Workload aus und skalieren sie mit Sicherheit, Open-Source-Innovation und schneller Bereitstellung.
Schalten Sie mit IBM Cloud Consulting Services neue Funktionen frei und steigern Sie die geschäftliche Agilität. Entdecken Sie, wie Sie mit Hybrid-Cloud-Strategien und Expertenpartnerschaften gemeinsam Lösungen entwickeln, die digitale Transformation beschleunigen und die Leistung optimieren können.