Container-Images sind unveränderliche statische Dateien, die ausführbaren Code enthalten und isoliert in der IT-Infrastruktur arbeiten.
Ein Container-Image setzt sich aus allen Komponenten zusammen, die zur Erstellung eines Containers auf einem Betriebssystem benötigt werden, und besteht aus verschiedenen übereinander gestapelten Image-Ebenen. Container-Images sind unveränderbar und haben dieselben Funktionen wie Vorlagen.
Container-Images werden in einer Container-Image-Registry (oder Container-Registry) gespeichert, die als eine Art Dateisystem dient. Container-Registries sind Daten-Repositories (oder mehrere Repositories), die Container-Images für die Speicherung und/oder den Zugriff speichern.
Ein bemerkenswerter Vorteil von Container-Registries ist die reibungslose Verbindung zu Container-Orchestrierungssystemen/-plattformen wie Kubernetes und Docker. Darüber hinaus können Container-Registries in einer DevOps-Funktion während der containerbasierten Anwendungsentwicklung verwendet werden und ermöglichen so eine optimierte Workflow-Integration.
Ein Container-Image ist eine Ansammlung von Schichten, die Folgendes umfassen:
Bei neuen Bildern, die von Grund auf neu erstellt werden, beginnt alles mit der untersten Ebene, dem Basis-Image. Das Basis-Image ist das Basis-Image, mit dem die meisten Container-basierten Entwicklungsworkflows beginnen. Viele Basis-Images bestehen aus einfachen oder minimalen Linux®-Distributionen (wie Debian, Ubuntu, Red Hat® Enterprise Linux (RHEL), Rocky Linux oder Alpine). In den Basis-Images werden die Dateisystemdateien des Containers gespeichert. Der Prozess der Erstellung von Basis-Images (bekannt als „Building“) ermöglicht es Entwicklern, eine standardisierte Umgebung aufzubauen, die benutzerdefinierte Container-Images unterstützt.
Anschließend werden eine Reihe von Dateisystemschichten hinzugefügt und auf dem Basis-Image gestapelt, einschließlich der folgenden:
Bei Container-Images, die bereits vorhandene Images einbeziehen, wird das Basis-Image der vorhandenen Images als „Parent Image“ bezeichnet. Wenn ein Image ein reines Original ist, wird gesagt, dass es kein Parent Image hat.
Container-Images werden in Container-Registries gespeichert, wobei die Images entweder in diese Container Registry hochgeladen („Pushing“) oder in ein anderes System heruntergeladen („Pulling“) werden.
Container Registries verwenden Objektspeicher, um Metadaten über Container-Images zu manifestieren. Dies bietet eine Möglichkeit, solche Metadaten erfolgreich zu übertragen, aber sie ist begrenzt. Im Falle von Daten, die mehrere Images beinhalten, gibt es zum Beispiel Grenzen für die Anzahl der verfügbaren Listing-Tags.
Abhängigkeitscontainer bieten eine weitere Speichermethode. Diese Container ermöglichen die Verwaltung, Registrierung und Auflösung von Abhängigkeiten innerhalb einer Anwendung. Abhängigkeiten beschreiben Situationen, in denen ein Objekt oder ein Prozess auftreten muss, bevor ein anderes Objekt wie angeordnet funktionieren kann.
In Anbetracht des dringenden Bedarfs an Online-Sicherheit ist die Authentifizierung von Personen, denen Zugang zu Repositories gewährt wird, unerlässlich. Die Authentifizierung verwendet eine Reihe von Berechtigungen, die sich speziell auf diese Container Registry beziehen. 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. Container-Laufzeiten verwenden eine Reihe von Schritten, um die Erstellung von Containern durchzuführen. Diese Schritte umfassen den gesamten Prozess der Bildung von Containern und der Initialisierung ihrer Umgebung, angeleitet durch ein Container-Image, das die Anwendung und ihre Abhängigkeiten enthält.
Es gibt zwei Anbieter der Container-Orchestrierung, die für die Verwendung von Containern und Container-Images von zentraler Bedeutung sind:
Docker ist ein Container-Orchestrierungssystem, das die Komplexität beim Erstellen, Bereitstellen und Ausführen von Apps reduziert. Docker gilt als einfache Möglichkeit, leichtgewichtige und in sich geschlossene Container zu erstellen, die auf jeder Plattform laufen können, unabhängig von der jeweiligen Infrastruktur. Da sie von einem Rechner auf einen anderen verschoben werden können, bieten Docker-Container auch höchste Portabilität. Darüber hinaus bietet Docker ein Standardmittel für die Bereitstellung von Microservices, indem es dem Benutzer erlaubt, Microservices als Container-Images zu paketieren.
Die Image-Ressource von Docker ist DockerHub, die freien Zugang zu mehr als 100.000 Images und anderen Docker-Dateien bietet, die von Docker-Benutzern, Software-Anbietern und Open-Source-Projekten zur Verfügung gestellt werden. Ein kostenpflichtiger Docker-Container-Registry-Service ist auch für die private Nutzung verfügbar. Docker-Images verwenden eine Docker-Befehlszeilenschnittstelle (Docker CLI), die wichtige Operationen wie Anmeldung, Push und Pull ermöglicht. Benutzer erstellen Docker-Images mit der Funktion Docker Build der Docker Engine, die das Verpacken und Bündeln von Quellcode ermöglicht. Docker kann mit Hilfe von JavaScript Object Notation (JSON) Konfigurationsdateien konfiguriert werden. JSON ist das bevorzugte Format, da es alle Konfigurationen an einem Ort verwaltet.
Kubernetes ist eine Open Source-Plattform für die Containerorchestrierung. Kubernetes wird verwendet, um zahlreiche Softwareprozesse wie Verwaltung, Bereitstellung und Skalierung zu automatisieren. In einem Kubernetes Service sind ein oder mehrere Computer (entweder virtuelle Maschinen oder Bare Metal Server) in einem Cluster miteinander verbunden, in dem Container-Workloads unterschiedlicher Größe und Art ausgeführt werden können. Der Kubernetes-API-Server (Application Programming Interface) konfigurieren Daten für API-Objekte wie Pods, Services, Replikations-Controller und so weiter. APIs ermöglichen es verschiedenen Softwareanwendungen, miteinander zu kommunizieren und Daten in voller Kooperation miteinander zu teilen.
Docker und Kubernetes bieten zwar ähnliche Services an, unterscheiden sich jedoch in ihrem jeweiligen Sinn für Skalierbarkeit. Docker ist eine Container-Laufzeitumgebung, aber Kubernetes ist eine vollständige Plattform, die Container aus mehreren Containern aufnimmt. Docker ist nur eine der Container-Laufzeiten, die Kubernetes unterstützt.
Container-Images sind eine wichtige Komponente der Verwendung von Container Registry.
Container-Images sind so konzipiert, dass sie alles enthalten, was für den Betrieb eines Containers erforderlich ist. Sobald Container-Images erstellt wurden, ist für die Ausführung von Containern nur noch der richtige Prompt vom Computersystem erforderlich. Dadurch eignen sich Container-Images perfekt für eine schnelle Implementierung.
Geschäftsprioritäten ändern sich oft über Nacht. Indem Container-Images im Voraus erstellt werden, kann ein Unternehmen seinen gesamten potenziellen Containerbedarf vorhersagen und später die Container auswählen, die für diese Zeit und diesen Zweck am besten geeignet sind. Container-Images geben Unternehmen die Möglichkeit, ihre Umgebung an die Bedingungen anzupassen.
Die Sicherheit der Container wird durch Zugriffskontrollen gewährleistet, die von Container Registry erzwungen werden. Hierzu gehören Authentifizierungsprotokolle, um sicherzustellen, dass nicht autorisierten Personen der Zugriff auf Container-Images verweigert wird. Die Verschlüsselung wird heute routinemäßig verwendet, um Bilder zu kodieren und vor Sicherheitslücken zu schützen.
Bei den folgenden Aktivitäten werden Container-Images in großem Umfang verwendet:
Containerbasierte Bereitstellungen, die durch die Verwendung von Container-Images ermöglicht werden, unterstützen cloudnativ Architekturen und bieten ihnen die erforderliche Isolation und Flexibilität. Mit Containern und Container-Images können Benutzer skalierbare, cloudnativ Apps erstellen und optimieren.
Viele Container Registries (und die Container-Images darin) unterstützen Microservice-Benutzer dabei, indem sie den Prozess des Auffindens und der Verbindung zu einem bestimmten Microservice innerhalb eines Container-Clusters verdeutlichen.
Virtuelle Maschinen (VMs) sind Computersysteme, die Software auf einem Computer verwenden, um die Funktionen eines anderen Computers nachzuahmen. ViMs haben eine einzigartige Beziehung zu Container-Images. Benutzer verwenden VMs häufig als Host-Betriebssystem für Container, anstatt Container direkt auf der Hardware auszuführen, insbesondere wenn Container in der Cloud ausgeführt werden müssen.
Der Markt für Container-Image-Anbieter ist sowohl fließend als auch dynamisch, mit viel Aktivität und zahlreichen Marktteilnehmern, die in den Markt eintreten oder ihn verlassen. Diese Anbieter haben sich in diesem Markt jedoch einen nachhaltigen Ruf erarbeitet:
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.