Zum Inhalt springen

Container und Buildpacks

Zuletzt aktualisiert am

Container sind ein gängiges Konzept in Cloud-Infrastrukturen. In diesem Dokument erklären wir, was Container sind und warum sie für Ihre Anwendung vorteilhaft sind. Dazu sehen wir uns mit Docker das am weitesten verbreitete Tool zur Containerisierung an. Außerdem zeigen wir Ihnen, wie STACKIT Cloud Foundry Ihre Anwendung mithilfe von Buildpacks automatisch containerisieren kann.

Container sind ausführbare Instanzen Ihrer Anwendung, die zusammen mit allen für den Betrieb erforderlichen Abhängigkeiten paketiert werden. Diese lose isolierten Umgebungen sind nicht nur für die Cloud nützlich, sondern können auch auf Container-Runtimes auf lokalen Systemen oder in traditionelleren Umgebungen laufen.

Während virtuelle Maschinen (VMs) die zugrunde liegende Infrastruktur virtualisieren und daher ein Gastbetriebssystem benötigen, virtualisieren Container direkt das Betriebssystem und enthalten deshalb nur die Anwendung und ihre Abhängigkeiten. Dadurch sind Container sehr leichtgewichtig und portabel. Da alle Abhängigkeiten der Anwendung im Container enthalten sind, sind sie plattformunabhängig.

Ihre Anwendung wird, in einem Container paketiert und bereit für die Bereitstellung, als Container-Image bezeichnet. Solche Images lassen sich leicht erstellen und schnell starten, weshalb sie das Rückgrat jeder schnell skalierenden Infrastruktur bilden.

Mit diesen Vorteilen unterstützen Container moderne Entwicklungsmethoden und Architekturen wie DevOps und Microservices. Durch ihre geringe Größe verbessern sie die Auslastung von CPU und Arbeitsspeicher.

Docker ist das am weitesten verbreitete Tool zur Containerisierung. Es handelt sich um ein Open-Source-Projekt, das von einem gleichnamigen Unternehmen unterstützt wird. Docker stellt die Werkzeuge bereit, die Sie benötigen, um Ihre Anwendung als Container-Image zu paketieren, und bietet darüber hinaus weitere Produkte in seinem Ökosystem, zum Beispiel die Container-Registry Docker Hub als Repository für öffentliche (und private) Container-Images, den Desktop-Client Docker Desktop und mehr.

Docker stellt einen Client und Kommandozeilenwerkzeuge bereit und kann Images automatisch erstellen, indem Anweisungen aus einer Dockerfile gelesen werden. Das bedeutet allerdings auch, dass Sie für jede Anwendung, die Sie mit Docker containerisieren möchten, eine solche Datei schreiben müssen.

Weitere Informationen zu Docker und Docker-Images im Allgemeinen finden Sie in der offiziellen Dokumentation.

Buildpacks sind eine Containerisierungsmethode, die speziell für die Cloud Foundry Plattform entwickelt wurde, inzwischen aber auch in anderen Cloud-Plattform-Projekten zunehmend genutzt wird. Kurz gesagt erkennen Buildpacks die Frameworks und Abhängigkeiten Ihrer Anwendung und paketieren anschließend alles Notwendige in ein Container-Image. Im Vergleich zu Docker müssen Sie dafür nicht selbst festlegen, wie Ihre Anwendung containerisiert wird, denn Buildpacks übernehmen das bereits für Sie.

Dafür gibt es viele Buildpacks, die auf unterschiedliche Frameworks, Programmiersprachen und sogar Abhängigkeiten spezialisiert sind. Sie bestehen in der Regel aus vier Skripten:

  • detect bestimmt, ob ein Buildpack für einen bestimmten Anwendungstyp verwendet werden kann
  • supply paketiert alle von der Anwendung benötigten Abhängigkeiten
  • finalize bereitet die Anwendung auf die Ausführung vor
  • release liefert Informationen dazu, wie die Anwendung genau ausgeführt werden soll

Das Ausführen dieser Skripte wird als Staging bezeichnet. Das Ergebnis des Staging heißt Droplet und funktioniert wie jedes andere Container-Image.

Wenn ein Build-Artefakt in eine Cloud Foundry Plattform (z. B. STACKIT Cloud Foundry) gepusht wird, durchläuft die Plattform die Erkennungsphase ihrer Buildpacks (oder verwendet das Buildpack, das per Argument im Push-Befehl oder in der Manifest-Datei vorgegeben wurde). Das erste Buildpack mit erfolgreichem detect-Lauf wird anschließend zur Erstellung eines Droplets verwendet. Nach diesem Staging-Prozess kann das Droplet bereitgestellt und auf der internen Container-Runtime ausgeführt werden.

Wenn Sie das von der Plattform zu verwendende Buildpack im Push-Argument oder in der Manifest-Datei festlegen, können Sie auch Custom Buildpacks aus der Open-Source-Community, Cloud Native Buildpacks oder ein eigenes Custom Buildpack nutzen.

Mit Buildpacks können Sie den Aufwand für Skripting und Containerisierung Ihres Anwendungs-Build-Artefakts direkt an die Cloud-Plattform übergeben, auf der Sie Ihre Anwendung veröffentlichen möchten.

Weitere Informationen zu Buildpacks finden Sie in der offiziellen Cloud Foundry Dokumentation zu Buildpacks.