Was ist ein Container-Image?

Geschäftsmann sitzt mit Laptop auf einer Bank vor einem Bürogebäude

Autoren

Phill Powell

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Was ist ein Container-Image?

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.

Luftaufnahme einer Autobahn

Bleiben Sie in der Cloud

Abonnieren Sie den wöchentlichen Think-Newsletter und erhalten Sie Tipps von Experten zur Optimierung von Multi-Cloud-Einstellungen in Zeiten von KI.

Wie werden Container-Images erstellt?

Ein Container-Image ist eine Ansammlung von Schichten, die Folgendes umfassen:

  • Basis-Image
  • Bibliotheken
  • Binärdateien
  • Abhängigkeiten
  • Konfigurationsdateien

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:

  • Erforderliche Bibliotheken, Standardsammlungen von Algorithmen und Klassenvorlagen, mit denen Programmierer gemeinsame Datenstrukturen (z. B. Listen, Stacks und Warteschlangen) erstellen können
  • Notwendige Binärdateien, bei denen es sich um ausführbare Dateien handelt, die für die Implementierung verschiedener Programme und Befehle erforderlich sind. Binärordner sind so konzipiert, dass Benutzer schnellen Zugriff auf benötigte ausführbare Dateien haben.
  • Verschiedene Abhängigkeiten, die die Erstellung und den Betrieb von Containern regeln.
  • Konfigurationsdateien (Configs), die benötigt werden, um den betreffenden Container auszuführen.

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.

AI Academy

KI-Bereitschaft mit Hybrid Cloud

Das Programm, das von führenden IBM Experten geleitet wird, soll Führungskräften dabei helfen, das nötige Wissen zu erwerben, um die Prioritäten für KI-Investitionen zu setzen, die zu mehr Wachstum führen.

Wie funktionieren Container-Images?

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.

Objektspeicher

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

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.

Authentifizierung

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.

Container-Laufzeiten

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.

Docker und Kubernetes

Es gibt zwei Anbieter der Container-Orchestrierung, die für die Verwendung von Containern und Container-Images von zentraler Bedeutung sind:

Docker

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

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.

Vorteile von Container-Images

Container-Images sind eine wichtige Komponente der Verwendung von Container Registry.

Schnelle Bereitstellung

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.

Ständige Bereitschaft

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.

Sichere Nutzung

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.

Anwendungsfälle für Container-Images

Bei den folgenden Aktivitäten werden Container-Images in großem Umfang verwendet:

Cloudnative Apps

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.

Microservices

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.

Virtual Machines

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.

Führende Anbieter von Container-Images

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:

  • Amazon: Amazon Web Services (AWS) betreibt Amazon Elastic Container Registry (ECR), das den Einsatz von Amazon Inspector beinhaltet, der das Scannen von Container-Images auf Sicherheitslücken verwaltet. ECR unterstützt auch die konto- und regionenübergreifende Replikation und ermöglicht so einen einfacheren Zugriff auf Bilder.
  • Apache: Apache ist eine Open-Source-Webserver-Software, die kostenlos erhältlich ist und von der Apache Software Foundation angeboten wird, die schätzt, dass Apache-Software auf etwa 30 % aller Webserver läuft.
  • GitHub: Die GitHub-Plattform (jetzt im Besitz von Microsoft) hat breite Unterstützung unter den Entwicklern gefunden, die die Art und Weise schätzen, wie diese proprietäre Software den Austausch von Code, die Verwaltung von Code und die Zusammenarbeit ermöglicht.
  • IBM: Mit IBM® Cloud Container Registry können Benutzer ganz einfach ihre eigene Registry starten und private Images in die Registry übertragen, um sie mit dem IBM Cloud Kubernetes Service zu verwenden. Benutzer profitieren vom Datenschutz einer eigenen, vollständig verwalteten Registry. Der Service, der kostenlos getestet werden kann, basiert auf einer nutzungsbasierten Abrechnung, d. h. die Nutzer zahlen nur für das, was sie verbrauchen.
  • Microsoft: Die Azure-Plattform von Microsoft verwendet Azure Container Registry (ACR), die Docker-Images und Open Container Initiative (OCI)-Images enthält und OCI-Artefakte unterstützt. Die Funktion „Connected Registry“ von ACR (Teil des Premium-Service-Tiers des Programms) erstellt eine lokale oder entfernte Replik, die Container-Images und OCI-Artefakte mit dem cloudbasierten ACR synchronisiert, das sowohl Windows®- als auch Linux-Images aufnehmen kann. Eine Methode zur Interaktion mit Computerprogrammen besteht im Schreiben und Eingeben von Textzeilen, die auch als Befehlszeilen bezeichnet werden. Betriebssysteme, die diese Methode der Interaktion verwenden, verfügen über eine Befehlszeilenschnittstelle (CLI). Die meisten Computerbenutzer verlassen sich heute auf grafische Benutzeroberflächen (GUIs), obwohl CLIs immer noch von denjenigen bevorzugt werden, die Skripte im Rahmen von Automatisierungsbemühungen schreiben. Azure bietet Benutzern die Flexibilität, Docker CLI zu verwenden, um wichtige Container-Image-Operationen auszuführen.
  • Python: Python ist eine interpretierte, objektorientierte, hochrangige Programmiersprache, die von der Python Software Foundation angeboten wird. Aufgrund seiner integrierten Datenstrukturen eignet sich Python perfekt für Workloads, die eine schnelle Anwendungsentwicklung erfordern. Der Hauptvorteil von Python für Software-Programmierer ist die Benutzerfreundlichkeit, die vor allem auf das Fehlen eines Kompilierungsschritts zurückzuführen ist. Dadurch können Programmierer einen beschleunigten Debugging-Zyklus verwenden, der Zeit spart.
  • Red Hat: Red Hat setzt sich seit der Gründung des Unternehmens 1993 für Linux-basierte Programmierung ein. Die von Red Hat angebotene Container-Registry, OpenShift® Container Platform (OCP), ermöglicht es Benutzern, bei Bedarf automatisch auf Image-Repositories zuzugreifen und gibt ihnen außerdem einen Standard-Speicherort, an dem sie die Images, die aus der Erstellung von Anwendungen resultieren, pushen können.
Weiterführende Lösungen
IBM Red Hat OpenShift

Red Hat OpenShift on IBM Cloud ist eine vollständig verwaltete OpenShift Container Platform (OCP).

Red Hat OpenShift erkunden
Container-Lösungen

Container-Lösungen führen Container-Workload aus und skalieren sie mit Sicherheit, Open-Source-Innovation und schneller Bereitstellung.

Container erkunden
Cloud-Beratungsleistungen 

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.

Cloud-Services
Machen Sie den nächsten Schritt

Modernisieren Sie Ihre Infrastruktur mit den Containerlösungen von IBM. Mit der umfassenden Container-Plattform von IBM können Sie containerisierte Workloads flexibel, sicher und effizient über verschiedene Umgebungen hinweg ausführen, skalieren und verwalten.

Containerlösungen kennenlernen Kostenloses IBM Cloud-Konto erstellen