Klausurzusammenfassung: Cloud Computing
Klausurorientierte Zusammenfassung aus den Skripten zu Grundlagen, Virtualisierung, Docker und der Probeklausur.
1. Überblick und Prüfungslogik
Cloud Computing ist in der Klausur kein reines Definitionsfach. Typische Aufgaben verlangen, dass ein technischer oder betrieblicher Sachverhalt eingeordnet wird: Welche Verantwortung liegt beim Kunden, welche beim Provider, welche Art der Virtualisierung steckt darunter, welches Service- oder Bereitstellungsmodell passt und welche Risiken entstehen daraus?
Gliederung
- Cloud-Grundlagen und On-Premise-Vergleich
- Vorteile: Skalierung, On-Demand, globale Infrastruktur und Kosten
- Herausforderungen: Kosten, Sicherheit, Governance und Know-how
- Virtualisierung und Container
- Service- und Bereitstellungsmodelle
- Edge Computing
- Docker: Container, Images, Registry und Dockerfile
- Docker-Best-Practices und Probeklausur
- Lerncheckliste und mögliche Klausurfragen
- Abdeckung der Skripte
2. Cloud-Grundlagen und On-Premise-Vergleich
2.1 On-Premise
Beim On-Premise-Betrieb erwirbt ein Unternehmen Hardware und Software und betreibt diese auf eigener Infrastruktur. Damit entstehen hohe Anpassbarkeit und volle Kontrolle, aber auch volle Verantwortung für Anschaffung, Wartung, Updates, Verfügbarkeit, Sicherheit und Livegang.
Typische On-Premise-Probleme
| Problem | Ursache | Wirkung in der Praxis | Klausurhinweis |
|---|---|---|---|
| Hohe Startinvestition | Hardware, Personal und Beschaffung müssen vorab finanziert werden. | Lange Bereitstellungszeiten, frühe Überdimensionierung, kaum Experimente. | CapEx und Kapitalbindung nennen. |
| Hohe Auslastung als Ziel | Teure Hardware soll ausgelastet werden. | Mehrere Anwendungen teilen Server und Datenbankressourcen, Fehler isolieren schlechter. | Auslastung ist nicht automatisch Effizienz, wenn Fehlerfolgen steigen. |
| Wartungsstau | Updates und Patches gefährden den Wiederanlauf kritischer Anwendungen. | Unzureichend gepatchte Systeme, Sicherheitsrisiken, Innovationsbremse. | Status quo wird verteidigt. |
| Schneeflocken-Konfiguration | Manuelle Änderungen werden nicht sauber dokumentiert. | Server sind nicht reproduzierbar, Fehleranalyse und Replikation werden schwierig. | Direkter Übergang zu Infrastructure as Code. |
| Inkompatible Verwaltung | Historisch gewachsene Hardware- und Managementsysteme. | Hoher manueller Aufwand, kaum übergreifende Automatisierung, schwierige Fehlersuche. | Cloud adressiert auch Organisation und Betrieb, nicht nur Technik. |
2.2 Cloud Computing
Cloud Computing hebt den direkten Bezug zu konkreter Hardware auf. Statt physische Ressourcen selbst zu kaufen und zu betreiben, nutzt der Kunde virtuelle IT-Ressourcen über eine Management- und Automatisierungsschicht. Diese Ressourcen können Rechenleistung, Speicher, Netzwerk, Laufzeitumgebungen oder ganze Anwendungen sein.
| Dimension | On-Premise | Cloud Computing |
|---|---|---|
| Eigentum | Hardware und oft Software gehören dem Unternehmen. | Es werden Nutzungsrechte und Dienstleistungen bezogen. |
| Verantwortung | Kunde verantwortet Betrieb, Wartung und Ausfälle. | Provider übernimmt je nach Modell Teile bis fast alle Betriebsaufgaben. |
| Anpassbarkeit | Sehr hoch, inklusive Spezialhardware und Sonderkonfigurationen. | Mit steigendem Abstraktionsgrad sinkt die Anpassbarkeit. |
| Bereitstellung | Oft monatelange Beschaffung und Genehmigung. | On-Demand über UI, API oder Automatisierung. |
| Kostenstruktur | Hohe fixe Anfangsinvestition und laufende Wartung. | Nutzungsabhängige Kosten, aber Kostenmanagement wird wichtig. |
3. Vorteile: Skalierung, On-Demand, globale Infrastruktur und Kosten
3.1 Skalierbarkeit
Skalierbarkeit beschreibt die Fähigkeit eines Anwendungssystems, seine Leistung flexibel zu erhöhen oder zu reduzieren. In der Cloud werden dafür virtuelle Ressourcen passend zur aktuellen Last konfiguriert. Dadurch werden Unterauslastung und Lastspitzen besser beherrschbar als beim starr dimensionierten On-Premise-Betrieb.
- S
- Skalierungsfaktor. Er zeigt, wie stark die Leistungsfähigkeit durch zusätzliche Ressourcen steigt.
- L
- Leistungsmaß der Anwendung, zum Beispiel Durchsatz, Antwortzeitverbesserung oder Speicherfähigkeit.
| Skalierungsart | Prinzip | Vorteile | Grenzen und Fallen |
|---|---|---|---|
| Vertikale Skalierung | CPU, RAM, Speicher oder Netzwerk einer Maschine werden verstärkt. | Kaum Architekturänderungen; klassische Anwendungen profitieren schnell. | System muss oft gestoppt werden; Hardware ist begrenzt; Single Point of Failure bleibt möglich. |
| Horizontale Skalierung | Weitere Maschinen, VMs oder Container übernehmen Last. | Großes Skalierungspotential; im Betrieb möglich; passt gut zu Cloud und Containern. | Anwendung muss zustandsarm, verteilbar oder über gemeinsame Dienste koordiniert sein. |
3.2 Fertige Cloud-Funktionen und Innovation
Cloud Provider stellen fertige Funktionen bereit, die in Eigenentwicklung teuer wären. Beispiele sind Bilderkennung, OCR, Sprachverarbeitung, Textanalyse, KI-Dienste, IAM, Monitoring oder Big-Data-Verarbeitung. Dadurch können Projekte komplexe Funktionen pilotieren, ohne sofort eigene Spezialteams und Infrastruktur aufzubauen.
3.3 Globale Verteilung und Latenz
Große Cloud Provider betreiben weltweit verteilte Rechen- und Speicherinfrastruktur und sind an zentrale Internetknoten angebunden. Das ermöglicht niedrige Latenzen für Anwendungsfälle wie Cloud-Gaming, virtuelle Zusammenarbeit, Telemedizin, Echtzeit-Tracking oder Echtzeit-Empfehlungen.
3.4 On-Demand-Bereitstellung
Cloud-Ressourcen können direkt über ein UI, eine API oder Automatisierung bereitgestellt werden. Dadurch entfällt der mehrstufige Beschaffungsprozess, und Ressourcen müssen nicht schon zu Projektbeginn grob überdimensioniert werden. Änderungen an Konfiguration und Kapazität bleiben später möglich.
3.5 Skaleneffekte
Provider können hohe Fixkosten für Rechenleistung, Netzwerksicherheit, DDoS-Schutz, Backups, Red Teams und Ausfallsicherheit auf viele Kunden und Dienste verteilen. Dadurch entstehen Skaleneffekte: Je mehr Dienste genutzt werden, desto stärker sinken die Stückkosten für einzelne Leistungen.
3.6 Wirtschaftlichkeit und Kostenlogik
Cloud Computing verändert die Kostenstruktur. On-Premise verursacht hohe Anfangsinvestitionen und relativ nutzungsunabhängige Kosten. Cloud Computing wandelt Fixkosten in variable, nutzungsabhängige Kosten um. Diese Fixkostenvariabilisierung erhöht die Planungsflexibilität, garantiert aber keine Gesamtersparnis.
- Abschreibung
- Monatlicher Anteil der Hardwareanschaffung, im Beispiel über drei Jahre.
- Strom
- Verbrauch unter typischer Auslastung inklusive Energieeffizienzfaktor.
- Wartung
- Personalkosten für Updates, Failover und Wartungsarbeiten.
| Kostenaspekt | On-Premise | Cloud | Klausurargument |
|---|---|---|---|
| Anfangskosten | Hoch, aktivierbar, langfristige Bindung. | Niedrig, nutzungsbezogen. | Cloud senkt Einstiegshürden und erleichtert Experimente. |
| Laufende Kosten | Wartung, Strom, Ersatzteile, Personal, Training. | Provider-Rechnung, Datenverkehr, Speicher, Zusatzdienste, Schulung. | Cloud-Kosten müssen aktiv gesteuert werden. |
| Skalierung | Vorhalten von Kapazität. | Zuschalten und Abschalten nach Bedarf. | Vorteil entsteht vor allem bei schwankender Last. |
| 20-Server-Szenario | Zusätzliche Infrastruktur wie Netzwerk, Kühlung, Backup und Betriebspersonal stärker relevant. | Skaleneffekte nutzbar, aber Governance und Kostenkontrolle werden wichtiger. | Nicht nur Serverpreis multiplizieren. |
4. Herausforderungen: Kosten, Sicherheit, Governance und Know-how
4.1 Kostenmanagement
Cloud-Kosten können deutlich über Plan liegen. Ursachen sind zusätzliche Ressourcennutzung, komfortable Zusatzdienste, nicht cloud-optimierte Legacy-Anwendungen, fehlende Abschaltung ungenutzter Ressourcen und Datenkosten. Besonders gefährlich ist, dass Cloud-Ressourcen schnell erstellt, aber organisatorisch nicht immer sauber verantwortet werden.
4.2 Sicherheit
Eine häufige Ursache für Datenabfluss ist mangelhafte Rechtekonfiguration auf Cloud-Datenspeichern. Zusätzlich müssen Daten in der Cloud verschlüsselt, Zugriffe geprüft und Netzwerkgrenzen sauber definiert werden. Der Provider bietet oft starke Sicherheitswerkzeuge, aber falsche Konfiguration bleibt ein Kundenrisiko.
| Risiko | Beispiel | Gegenmaßnahme |
|---|---|---|
| Fehlkonfigurierte Zugriffe | Cloud-Speicher ist öffentlich oder für falsche Gruppen sichtbar. | Least Privilege, IAM-Review, automatisierte Policy-Prüfung. |
| Unverschlüsselte Daten | Daten werden im Transit oder im Speicher unzureichend geschützt. | Transportverschlüsselung, Schlüsselmanagement, Verschlüsselung ruhender Daten. |
| Geteilte Verantwortung unklar | Kunde nimmt an, der Provider sichere alles automatisch. | Shared-Responsibility-Modell je Service klären. |
4.3 Fehlende zentrale IT-Governance
Cloud-Ressourcen können dezentral von Teams bereitgestellt werden. Das beschleunigt Projekte, erschwert aber zentrale Vorgaben zu Datenschutz, Datenqualität, Softwarequalität, Kostenkontrolle und Synergien zwischen Projekten. In der Klausur ist wichtig: Der Wegfall zentraler Genehmigungsprozesse ist gleichzeitig Vorteil und Risiko.
4.4 Fehlendes Know-how
Cloud Computing verlangt neues Wissen in Infrastrukturmanagement und automatisierter Softwareauslieferung. Traditionelle, veränderbare Infrastruktur erzeugt schnell Schneeflocken-Konfigurationen. Cloud-nahe Systeme arbeiten besser mit reproduzierbarer, unveränderbarer Infrastruktur und Automatisierung.
| Konzept | Bedeutung | Prüfungsabgrenzung |
|---|---|---|
| Continuous Integration | Automatisierte Tests nach Codeänderungen. | Frühe Erkennung von Inkompatibilitäten, noch kein automatischer Produktivbetrieb. |
| Continuous Delivery | Automatisiert eine auslieferbare Version nach erfolgreichen Tests. | Release ist möglich, aber meist noch bewusst freizugeben. |
| Continuous Deployment | Jede erfolgreiche Änderung wird automatisch produktiv gesetzt. | Höchste Automatisierung, benötigt starke Tests, Monitoring und Rollback-Strategien. |
5. Virtualisierung und Container
5.1 Simulation, Emulation und Virtualisierung
| Begriff | Kernidee | Praxiseinsatz | Beispiele |
|---|---|---|---|
| Simulation | Vollständige Nachbildung eines Systems inklusive Wirkzusammenhängen. | Erkenntnisgewinn, Training, Forschung. | Flugsimulator, Wetterberechnung, iPhone Simulator. |
| Emulation | Nachbildung gleicher Schnittstellen ohne zwingend gleiche interne Logik. | Kann nachgebildetes System praktisch ersetzen. | Rosetta, WSL1, JVM, virtuelle Netzwerkkarte. |
| Virtualisierung | Entkopplung von Ausführungsumgebung und physischer Hardware. | Betrieb isolierter Umgebungen mit geringeren Performanceverlusten. | ESXi, VirtualBox, Xen, KVM, Containertechnologien. |
5.2 Gründe für Virtualisierung
| Grund | Nutzen | Beispiel |
|---|---|---|
| Isolation | Laufzeitfehler und Abhängigkeiten bleiben auf eine Umgebung begrenzt. | Unterschiedliche Bibliotheken oder Programmiersprachen pro Anwendung. |
| Multiplizität | Mehrere Systeme laufen parallel auf gleicher Hardware. | Alt- und Neusystem zeitgleich betreiben. |
| Portabilität | Systemabbilder können auf andere Hardware verschoben und reproduziert werden. | Dev- und Prod-Umgebungen mit gleicher Konfiguration. |
5.3 Schichten eines Computersystems
Die Skripte unterscheiden Hardware, Kernel, Betriebssystem und Anwendung. Der Kernel spricht Hardware über Treiber an, koordiniert Ressourcen und kontrolliert Zugriffsrechte. Virtualisierung greift an unterschiedlichen Stellen dieser Schichten ein.
5.4 Voll-Virtualisierung
Bei der Voll-Virtualisierung bildet ein Hypervisor physische Hardware als virtuelle Maschinen ab. Jede VM besitzt ein eigenes Gast-Betriebssystem und ein eigenes Image. Das Gast-OS muss nicht angepasst werden und geht davon aus, direkten Hardwarezugriff zu haben. Der Hypervisor fängt Hardwarebefehle ab und ordnet sie den zugewiesenen Ressourcen zu.
| Hypervisor-Typ | Position | Vorteile | Nachteile |
|---|---|---|---|
| Typ I / Bare Metal | Direkt über der Hardware. | Hohe Performance, reduzierte Angriffsfläche, fokussierter Betrieb. | Dedizierte Virtualisierungsumgebung notwendig. |
| Typ II / Hosted | Auf einem Host-Betriebssystem. | Zusätzlich zu bestehender Software nutzbar, gut für Entwicklung und Tests. | Mehr Overhead, mehr Sicherheitsrisiko durch Host-OS und weitere Anwendungen. |
5.5 Para-Virtualisierung
Bei der Para-Virtualisierung weiß das Gast-OS, dass es virtualisiert läuft. Hardwareaufrufe werden nicht so getan, als gingen sie direkt an physische Hardware, sondern als API-Aufrufe an den Hypervisor geleitet. Dadurch kann die Performance steigen, allerdings muss das Gast-OS angepasst sein.
5.6 Prozessvirtualisierung und Container
Prozessvirtualisierung startet keine vollständige VM und nutzt keinen klassischen Hypervisor. Stattdessen übernimmt der Linux-Kernel mit cgroups und namespaces die Prozessisolation.
| Kernel-Funktion | Aufgabe | Beispiel |
|---|---|---|
| cgroups | Steuern, wie viele Ressourcen ein Prozess verwenden darf. | CPU- oder RAM-Limits für Container. |
| namespaces | Steuern, welche Ressourcen und Prozesse ein Prozess sehen darf. | Container sieht nur eigene Kindprozesse und eigene Netzwerkumgebung. |
5.7 Voll-Virtualisierung vs. Prozessvirtualisierung
| Kriterium | Voll-Virtualisierung | Prozessvirtualisierung |
|---|---|---|
| Ressourcen | CPU, RAM und Speicher werden für VMs reserviert. | Ressourcen werden bei tatsächlicher Nutzung belegt. |
| Isolation | Stark, da jede VM eigenes Gast-OS nutzt. | Schwächer, da Container den Host-Kernel teilen. |
| Gast-OS | Unterschiedliche Betriebssysteme möglich, solange Architektur passt. | Kernel des Host-OS wird genutzt; OS-Auswahl eingeschränkt. |
| Startzeit | Träger, da Gast-OS startet. | Schnell, da unmittelbar der Prozess startet. |
| Performance | Mit Hardwareunterstützung oft nur ca. 5 % bis 10 % Verlust. | Nahezu nativ, da Kernelaufrufe nicht übersetzt werden. |
| Imagegröße | Typisch mehrere GB ohne Anwendung. | Typisch deutlich kleiner, oft 50 bis 500 MB ohne Anwendung. |
| Skalierung | Weniger geeignet für schnelle horizontale Skalierung. | Sehr geeignet für schnelle horizontale Skalierung. |
6. Service- und Bereitstellungsmodelle
6.1 Abstraktion und Kontrolle
Cloud-Servicemodelle unterscheiden sich darin, welche Anteile einer Anwendung vom Provider verantwortet werden. Mit steigendem Abstraktionsgrad sinkt die Kontrolle des Kunden über Hardware und Betrieb, gleichzeitig gibt der Kunde Aufgaben wie Patching, Failover, Updates und Skalierung ab.
6.2 Servicemodelle
| Modell | Nutzungsobjekt | Kunde kontrolliert | Provider übernimmt | Typische Einsatzgebiete | Falle |
|---|---|---|---|---|---|
| IaaS | Virtuelle Maschine und grundlegende Infrastruktur. | OS, installierte Software, Konfiguration, Anwendungen. | Physische Hardware, Hypervisor, Verfügbarkeit der VM. | Migration bestehender Systeme, hohe Anpassbarkeit, individuelle Laufzeitumgebung. | Man behält viel Betriebsaufwand. |
| CaaS | Container-Laufzeit. | Container-Image, Anwendung, Ressourcenbedarf. | Host-OS, Containerplattform, teilweise Skalierung. | Microservices, containerisierte Webanwendungen, horizontale Skalierung. | Weniger Einfluss auf OS und Infrastrukturdetails. |
| PaaS | Laufzeitumgebung für Anwendungen. | Anwendungscode und begrenzte Konfiguration. | Hardware, OS, Laufzeitumgebung, viele Betriebsaufgaben. | Webanwendungen mit Standard-Laufzeit, schnelle Produktentwicklung. | Lock-in durch Provider-spezifische Laufzeitumgebung. |
| FaaS | Funktionen oder Event-getriebene Codeeinheiten. | Funktionslogik im Rahmen unterstützter Sprachen und Schnittstellen. | Hosting, Skalierung, Netzwerk, Ressourcen, Laufzeitverhalten. | Event-Verarbeitung, kleine Backend-Funktionen, unregelmäßige Last. | Starker Lock-in und kaum Einfluss auf Laufzeitumgebung. |
| SaaS | Fertige Anwendung. | Konfiguration und Nutzung innerhalb vorgegebener Funktionalität. | Entwicklung, Betrieb, Updates, Verfügbarkeit, Infrastruktur. | CRM, Kollaboration, E-Mail, Standardgeschäftsprozesse. | Stärkster Lock-in, geringe Portabilität und begrenzte Anpassung. |
6.3 Bereitstellungsmodelle
Bereitstellungsmodelle beantworten, wo und wie Cloud-Dienstleistungen erbracht werden. Die zentrale Abwägung lautet: Wie viel Kontrolle und Datensouveränität wird benötigt, und wie stark sollen Skalierung, globale Infrastruktur und Providerbetrieb genutzt werden?
| Modell | Kernidee | Vorteile | Nachteile | Geeignete Fälle |
|---|---|---|---|---|
| Private Cloud | Cloud-Verwaltungssoftware auf eigener physischer Infrastruktur. | Maximale Kontrolle, eigene Sicherheitskonzepte, hohe Datensouveränität. | Hoher Wartungsaufwand, eingeschränkte Skalierung, keine globale Providerinfrastruktur. | Hochsensible Daten, Air-Gap-Umgebungen, strenge physische Zugriffskontrolle. |
| Public Cloud | Breit zugängliche Cloud-Angebote eines Providers. | Volles Skalierungspotential, globale Infrastruktur, Fixkostenvariabilisierung. | Lock-in, geringere physische Kontrolle, Compliance- und Konfigurationsrisiken. | Neue digitale Produkte, variable Last, internationale Nutzerbasis. |
| Hybrid Cloud | Kombination aus Private und Public Cloud über einheitliche Verwaltung. | Sensible Daten lokal, Skalierung über Public Cloud, zentrale Governance möglich. | Hohe Konfigurationskomplexität, Kosten beider Welten. | Migration, saisonale Lastspitzen, sensible Kernsysteme plus flexible Zusatzlast. |
| Multi Cloud | Nutzung verschiedener Public Clouds über einheitliche Verwaltung. | Reduzierter Provider-Lock-in, Kostenoptimierung, zentrale Governance. | Sehr hohe Komplexität, Lock-in in Verwaltungssoftware möglich. | Große Unternehmen mit hohem Cloud-Reifegrad und Providerstrategie. |
| Virtual Private Cloud | Nicht öffentlich zugängliche Infrastruktur innerhalb einer Public Cloud, meist via VPN. | Isolation, Public-Cloud-Skalierung, weniger eigener Hardwarebetrieb. | Providerbindung, Netzwerkexpertise notwendig. | Unternehmen, die Cloud-Vorteile mit stärkerer Netzwerkisolation kombinieren wollen. |
7. Edge Computing
Edge Computing verarbeitet Daten so nah wie möglich am Entstehungsort. Das Skript unterscheidet Edge Devices, Far Edge, Edge Computing und anschließend Private oder Public Cloud. Edge ersetzt Cloud Computing nicht, sondern ergänzt es dort, wo Latenz, Bandbreite, Datenschutz oder Offlinefähigkeit kritisch sind.
| Nutzen | Beispiel | Klausurabgrenzung |
|---|---|---|
| Offlinefähigkeit | Kritische Infrastruktur verarbeitet Daten auch ohne Internetverbindung. | Edge ist näher am Entstehungsort als Private Cloud. |
| Datenschutz | Sensible Daten werden lokal verarbeitet oder gar nicht zentral gespeichert. | Nicht jede Private Cloud ist Edge; Standort und Latenz sind entscheidend. |
| Bandbreite | Maschinendaten werden vor Ort verdichtet, bevor sie in die Cloud gehen. | Edge kann Cloud-Datenmenge reduzieren. |
| Echtzeit | Qualitätskontrolle in einer Gießerei oder Turbinendatenanalyse. | Cloud ist oft zu weit entfernt für harte Latenzanforderungen. |
8. Docker: Container, Images, Registry und Dockerfile
8.1 Grundidee
Docker ist ein Werkzeug, mit dem Anwendungen gebaut, verteilt und betrieben werden können. Es nutzt Prozessvirtualisierung auf Basis von cgroups und namespaces und ist de facto Standard für Container. Die Container-Analogie aus der Schifffahrt ist wichtig: Standardisierung senkt manuellen Aufwand, erhöht Planbarkeit und erlaubt spezialisierte Infrastruktur.
| Begriff | Bedeutung | Klausurabgrenzung |
|---|---|---|
| Docker Client | Kommandozeilenprogramm, das Befehle entgegennimmt. | Sendet Befehle per REST-Schnittstelle an den Daemon. |
| Docker Daemon | Serverprozess, der Container erstellt, startet und verwaltet. | Setzt cgroups, namespaces und Image-Ausführung praktisch um. |
| Docker Image | Read-only Beschreibung der Laufzeitumgebung und Anwendung. | Nicht direkt die Laufzeit, sondern Vorlage. |
| Docker Container | Laufende Ausführung eines Images. | Änderungen im Container sind ohne Volume oder Commit nicht dauerhaft. |
| Docker Registry | Ablageort für Images. | Public oder private Registry, bekanntestes Beispiel Docker Hub. |
8.2 Image vs. Container und Copy-on-Write
Ein Docker Image ist read-only und portabel. Beim Start erzeugt Docker daraus einen Container mit einer zusätzlichen beschreibbaren Schicht. Änderungen werden nach dem Copy-on-Write-Prinzip in diese temporäre Schicht kopiert und dort verändert. Nach dem Beenden des Containers wird diese Schicht gelöscht, wenn keine Persistenz konfiguriert wurde.
8.3 Docker-Befehlssyntax
docker als Client, Objektklasse, Befehl, Optionen und Objektinstanz.| Befehl | Wirkung | Hinweis |
|---|---|---|
docker container run hello-world |
Erstellt und startet einen Container aus dem Image. | Fehlt das Image lokal, lädt der Daemon es aus der Registry. |
docker container run -d -p 8080:80 nginx |
Startet nginx im Hintergrund und mappt Host-Port 8080 auf Container-Port 80. | -d steht für detached, -p veröffentlicht Ports. |
docker container list |
Listet laufende Container. | Mit -a auch gestoppte Container. |
docker container stop 684 |
Stoppt den Container, dessen ID mit 684 beginnt. |
Kurze ID reicht, solange sie eindeutig ist. |
docker container rm 684 |
Löscht einen gestoppten Container. | Nicht mit Image-Löschung verwechseln. |
docker container stats |
Zeigt CPU-, RAM- und I/O-Nutzung. | Nützlich zur Ressourcenanalyse. |
docker container logs 684 |
Zeigt Konsolenausgaben des Containers. | Wichtig für Fehlersuche. |
8.4 Docker Images, Layer und Registry
Docker Images sind geschichtet. Jede Änderung erzeugt eine neue Schicht mit eigener Prüfsumme. Identische Schichten müssen nur einmal gespeichert und übertragen werden. Beim Build nutzt Docker den Build-Cache: Wenn sich eine Schicht nicht verändert hat, müssen sie und die darüberliegenden stabilen Schichten nicht neu gebaut werden.
8.5 Docker-Tags
latest gesetzt.latest bedeutet nicht zuverlässig „aktuellste Version“, sondern ist ein Standardwert beziehungsweise ein bewegliches Label. Für reproduzierbare Builds müssen konkrete Versionstags verwendet werden.
| Tag-Art | Einsatz | Begründung |
|---|---|---|
| Stable Tag | Baseimages, zum Beispiel kontrollierte Minor- oder Patch-Version. | Updates sind planbarer, ohne vollständig unkontrollierte Änderungen. |
| Unique Tag | Eigene gebaute Images, etwa Commit-ID oder Buildnummer. | Rollbacks und eindeutige Nachvollziehbarkeit werden möglich. |
8.6 Dockerfile-Aufbau
Ein Dockerfile ist eine Textdatei ohne Dateiendung. Es beschreibt, wie ein Docker Image gebaut wird. Die Skripte unterscheiden drei Blöcke: Baseimage, Anpassungen und Konfiguration der Ausführung.
| Befehl | Zeitpunkt | Wirkung | Klausurhinweis |
|---|---|---|---|
FROM |
Buildzeit | Legt das Baseimage fest. | Immer möglichst konkret versionieren, zum Beispiel openjdk:16-jdk-alpine. |
RUN |
Buildzeit | Führt Befehle beim Image-Bau aus. | Paketinstallationen bündeln, unnötige Schichten vermeiden. |
WORKDIR |
Buildzeit und Laufzeitkontext | Setzt Arbeitsverzeichnis für folgende Befehle. | Verhindert fehleranfällige Pfadwiederholungen. |
COPY |
Buildzeit | Kopiert lokale Dateien in das Image. | Nur benötigte Artefakte kopieren, nicht pauschal das ganze Projekt. |
ENV |
Buildzeit gesetzt, Laufzeit sichtbar | Definiert Umgebungsvariablen im Image und Container. | Nicht für Geheimnisse im Image verwenden. |
ARG |
Nur Buildzeit | Definiert Build-Argumente. | Für Werte, die zur Laufzeit nicht vorhanden sein sollen. |
EXPOSE |
Metadaten für Laufzeit | Dokumentiert den Container-Port. | Veröffentlicht den Port nicht automatisch auf dem Host; dafür braucht man -p. |
USER |
Ab dieser Dockerfile-Zeile | Führt folgende Befehle und den Containerprozess als Benutzer aus. | Benutzer und Gruppe vorher anlegen. |
CMD |
Laufzeit | Definiert den Standardbefehl beim Containerstart. | Exec-Form bevorzugen: CMD ["java", "-jar", "app.jar"]. |
9. Docker-Best-Practices und Probeklausur
9.1 Baseimage und Tags
Das Baseimage soll nur den notwendigen Funktionsumfang enthalten. Schlanke Images reduzieren Speicherbedarf, Übertragungszeit und Angriffsfläche. Offizielle Images sind zu bevorzugen, weil sie gepflegt und dokumentiert werden.
9.2 Geheimnisse und Umgebungsvariablen
Umgebungsvariablen eignen sich zur Laufzeitkonfiguration, etwa für Endpunkte, Profile oder Feature-Schalter. Sensible Daten dürfen nicht dauerhaft über ENV ins Image geschrieben werden, da Image-Historie und Metadaten auslesbar sein können. Wenn Umgebungsvariablen zur Laufzeit nötig sind, werden sie beim Start übergeben.
| Variante | Beispiel | Einsatz |
|---|---|---|
-e oder --env |
docker container run -e stage=prod image |
Einzelne Umgebungsvariable beim Start setzen. |
--env-file |
docker container run --env-file .env image |
Viele Variablen aus Datei übergeben. |
9.3 Layer-Reihenfolge und Build-Cache
Dockerfile-Befehle sollen nach Änderungsfrequenz sortiert werden: selten geänderte Schritte nach oben, häufig geänderte Schritte nach unten. Wird früh im Dockerfile eine häufig wechselnde Datei kopiert, invalidiert Docker den Cache für alle folgenden Schichten.
9.4 Non-root-Ausführung
Standardmäßig laufen Dockerfile-Befehle und Containerprozesse als root. Das ist riskant, weil Containerprozesse echte Prozesse auf dem Host sind und ein Ausbruch schwerwiegende Folgen haben kann. Deshalb sollte ein eigener Benutzer mit begrenzten Rechten angelegt und über USER verwendet werden.
USER den Containerprozess unter eingeschränkten Rechten starten.9.5 Muster-Dockerfile für die Probeklausur
Die Probeklausur verlangt ein Dockerfile für eine Spring-Boot-Anwendung mit target/app.jar, Port 8000, Buildzeit-Argument statt Laufzeit-ENV, eigenem Arbeitsverzeichnis und Non-root-Ausführung.
FROM openjdk:16-jdk-alpine
COPY target/ .
ENV stage=prod
EXPOSE 8000
CMD ["java", "-jar", "app.jar"]
EXPOSE 8000 dokumentiert den Container-Port. Damit der Port auf dem Host erreichbar ist, braucht der Startbefehl zusätzlich ein Port-Mapping, zum Beispiel -p 8000:8000.
FROM openjdk:16-jdk-alpine
RUN mkdir -p /app
WORKDIR /app
ARG stage=prod
COPY target/app.jar app.jar
RUN addgroup -S javagr && adduser -S java -G javagr
USER java
EXPOSE 8000
CMD ["java", "-jar", "app.jar"]
ARG stage=prod ist zur Bauzeit verfügbar, aber nicht automatisch zur Laufzeit im Container. COPY target/app.jar app.jar kopiert nur das benötigte Artefakt.
9.6 Typische Dockerfile-Bewertung
| Fehler | Warum problematisch? | Bessere Lösung |
|---|---|---|
latest als Baseimage |
Nicht reproduzierbar, unterschiedliche Versionen möglich. | Konkreten Stable Tag verwenden. |
| Großes Baseimage | Mehr Speicher, längerer Download, größere Angriffsfläche. | Schlankes offizielles Image wie Alpine-Variante wählen, wenn passend. |
COPY . . zu früh |
Build-Cache wird bei jeder Codeänderung ungültig. | Abhängigkeiten zuerst, Artefakt möglichst spät kopieren. |
Geheimnisse mit ENV |
Werte können in Image-Historie oder Metadaten landen. | Zur Laufzeit mit -e, --env-file oder Secret-Mechanismen setzen. |
Container läuft als root |
Erhöht Schaden bei Container-Ausbruch. | Benutzer und Gruppe anlegen, dann USER setzen. |
| SSH-Server im Container | Erhöht Angriffsfläche und widerspricht kurzlebigem Containerprinzip. | Logs, Exec, Metriken und Orchestrator-Werkzeuge nutzen. |
mvn clean install im Runtime-Image |
Build-Tools und Quellcode landen im Image, Image wird größer und unsicherer. | Artefakt außerhalb oder in separater Build-Stufe erzeugen, nur JAR ins Runtime-Image kopieren. |
10. Lerncheckliste und mögliche Klausurfragen
Lerncheckliste
- Ich kann On-Premise und Cloud anhand von Eigentum, Kontrolle, Verantwortung, Kosten und Anpassbarkeit unterscheiden.
- Ich kann vertikale und horizontale Skalierung erklären und passende Einsatzgrenzen nennen.
- Ich kann Cloud-Kosten nicht nur über Monatsgebühren, sondern mit versteckten Kosten, Skalierung und Governance bewerten.
- Ich kann Simulation, Emulation und Virtualisierung sauber abgrenzen.
- Ich kann Voll-, Para- und Prozessvirtualisierung erklären.
- Ich kann cgroups und namespaces als Grundlage von Containern beschreiben.
- Ich kann IaaS, CaaS, PaaS, FaaS und SaaS nach Kontrolle, Abstraktion und Lock-in einordnen.
- Ich kann Private, Public, Hybrid, Multi und Virtual Private Cloud mit Vor- und Nachteilen vergleichen.
- Ich kann Edge Computing von Private Cloud und Public Cloud abgrenzen.
- Ich kann Docker Image, Container, Registry, Dockerfile und Daemon erklären.
- Ich kann Docker-Kommandos für Container und Images sicher lesen und schreiben.
- Ich kann ein Dockerfile mit
FROM,COPY,ARG,ENV,WORKDIR,RUN,USER,EXPOSEundCMDerstellen und begründen.
Mögliche Klausurfragen
- Vergleichen Sie On-Premise und Cloud Computing für ein Startup und ein etabliertes internationales Unternehmen.
- Erklären Sie, warum Cloud Computing nicht automatisch günstiger ist als On-Premise.
- Unterscheiden Sie vertikale und horizontale Skalierung und nennen Sie Architekturfolgen.
- Grenzen Sie Simulation, Emulation und Virtualisierung voneinander ab.
- Vergleichen Sie Voll-Virtualisierung und Prozessvirtualisierung hinsichtlich Overhead, Isolation, Imagegröße und Skalierung.
- Ordnen Sie einen Anwendungsfall einem geeigneten Servicemodell zu und begründen Sie den Lock-in.
- Entwickeln Sie eine Cloud-Migrationsstrategie über Private, Hybrid, Virtual Private, Public oder Multi Cloud.
- Erklären Sie, wann Edge Computing sinnvoller ist als reine Cloud-Verarbeitung.
- Beschreiben Sie den Ablauf von
docker container run hello-worldvom Client bis zur Registry. - Erstellen und verbessern Sie ein Dockerfile für eine Spring-Boot-Anwendung.
Kurze Musterantworten
| Frage | Kernpunkte einer guten Antwort |
|---|---|
| Warum verändert Cloud auch Organisation und Entwicklung? | On-Demand-Ressourcen verändern Genehmigungsprozesse, Automatisierung ersetzt manuelle Deployments, Teams müssen Kosten und Governance mitverantworten, CI/CD und Infrastructure as Code werden wichtiger. |
| Warum sind Container gut für horizontale Skalierung? | Kleine Images, schneller Start, keine feste Reservierung ungenutzter Ressourcen, gleiche Anwendung kann aus demselben Image mehrfach parallel gestartet werden. |
| Warum kann FaaS starken Lock-in erzeugen? | Der Provider bestimmt unterstützte Sprachen, Laufzeit, Ereignismodell, Skalierung und Funktionsumfang. Anwendungscode hängt stark an Provider-spezifischen Schnittstellen. |
Warum ist EXPOSE allein nicht genug? |
EXPOSE dokumentiert den Container-Port im Image. Erreichbarkeit vom Host entsteht erst durch Port-Mapping beim Start, etwa -p 8080:80. |
11. Abdeckung der Skripte
| Folie/Kapitel | Inhalt | In Zusammenfassung enthalten? | Wo behandelt? |
|---|---|---|---|
| 1-Grundlagen S. 1-7 | Titel, Motivation, On-Premise, Cloud-Definition, Auswirkungen auf Betrieb, Technologie, Organisation und Entwicklung. | Ja | Abschnitt 2, Abschnitt 1 |
| 1-Grundlagen S. 8-14 | On-Premise-Herausforderungen: Investitionen, Auslastung, Wartung, Status quo, Schneeflocken-Konfigurationen, inkompatible Verwaltung. | Ja | Abschnitt 2.1 |
| 1-Grundlagen S. 15-25 | Cloud-Vorteile: Skalierung, vertikal/horizontal, fertige Funktionen, globale Infrastruktur, On-Demand, Skaleneffekte. | Ja | Abschnitt 3.1-3.5 |
| 1-Grundlagen S. 26-31 | Wirtschaftlichkeit, Fixkostenvariabilisierung, Beispielrechnung On-Premise vs. Cloud, Kalkulationsfragen. | Ja | Abschnitt 3.6 |
| 1-Grundlagen S. 32-39 | Cloud-Herausforderungen: Kostenmanagement, Sicherheit, zentrale Governance, Know-how, Infrastructure as Code, CI/CD. | Ja | Abschnitt 4 |
| 1-Grundlagen S. 40-42 | Argumentationsaufgaben Biotech&Ich und Advertisement Guru. | Ja | Abschnitt 10, Abschnitt 3, Abschnitt 4 |
| 2-Virtualisierung S. 1-8 | Agenda, Virtualisierungsdefinition, Simulation/Emulation/Virtualisierung, Gründe für Virtualisierung. | Ja | Abschnitt 5.1-5.2 |
| 2-Virtualisierung S. 9-18 | Computerschichten, Voll-Virtualisierung, Hypervisor-Typen, Para-Virtualisierung, Prozessvirtualisierung, VM-vs.-Container-Vergleich. | Ja | Abschnitt 5.3-5.7 |
| 2-Virtualisierung S. 19 | Übungsfragen zu Einsatzszenarien, Kombination VM/Container, Overhead und Entwicklung/Test/Betrieb. | Ja | Abschnitt 5.7, Abschnitt 10 |
| 2-Virtualisierung S. 20-29 | Cloud-Servicemodelle: IaaS, CaaS, PaaS, FaaS, SaaS, Kontrolle, Abstraktion, Lock-in. | Ja | Abschnitt 6.1-6.2 |
| 2-Virtualisierung S. 30-37 | Bereitstellungsmodelle: Private, Public, Hybrid, Multi und Virtual Private Cloud, Wartungsaufwand, Abstraktion. | Ja | Abschnitt 6.3 |
| 2-Virtualisierung S. 38-40 | Edge Computing, Einsatzgebiete, Abgrenzungsfragen und Aufgaben. | Ja | Abschnitt 7, Abschnitt 10 |
| 3-Docker S. 1-6 | Docker-Paradigma, Client/Daemon, Image, Container, Registry, Dockerfile. | Ja | Abschnitt 8.1 |
| 3-Docker S. 7-16 | Image vs. Container, Copy-on-Write, Befehlssyntax, Containerbefehle, hello-world, Port-Mapping, Stats und Logs. | Ja | Abschnitt 8.2-8.3 |
| 3-Docker S. 17-24 | Docker Images, Layer, Build-Cache, Tags, Registry, Spring und Umgebungsvariablen. | Ja | Abschnitt 8.4-8.5, Abschnitt 9.2 |
| 3-Docker S. 25-29 | Dockerfile-Aufbau, FROM, ENV, RUN, WORKDIR, COPY, EXPOSE, CMD, Image-Befehle. | Ja | Abschnitt 8.6 |
| 3-Docker S. 30-34 | Hands-on Spring2Docker, Build, Run, Curl, Authentifizierung und Profile. | Ja | Abschnitt 8, Abschnitt 9 |
| 3-Docker S. 35-43 | Best Practices: Baseimage, Tags, Secrets, Schichtenreihenfolge, USER, Dockerfile-Optimierung, Übungsdockerfile. | Ja | Abschnitt 9 |
| Probeklausur_2 S. 1-2 | Dockerfile-Aufgabe für Spring Boot, Port 8000, ARG vs. ENV, COPY app.jar, Non-root-Benutzer, Laufzeitvariablen. | Ja | Abschnitt 9.5-9.6 |