Was ist ein Base Image (Basis-Image) im Kontext von Containern (z. B. Docker)?
Ein Base Image ist das grundlegende Container-Image, auf dem weitere Images aufbauen. Es enthält Userspace-Komponenten (z. B. Bibliotheken, Paketmanager, Shell, Laufzeitumgebungen), nutzt aber immer den Kernel des Host-Betriebssystems.
Wichtige Merkmale:
Kein eigener Kernel (Unterschied zu VMs)
Enthält nur den Userspace: Tools, Bibliotheken, ggf. Laufzeitumgebungen
Kann minimal (z. B. scratch, alpine) oder umfangreicher sein (z. B. ubuntu)
scratch
alpine
ubuntu
Startpunkt im Dockerfile (FROM-Anweisung)
FROM
Beispiele für Base Images:
node
python
scratch (komplett leer)
Vorteile:
Wiederverwendbarkeit
Standardisierte Umgebung
Einfaches Layer-Modell
Reduzierung der Angriffsfläche (bei minimalen Images)
👉 Merksatz: Container nutzen den Kernel des Hosts – Base Images liefern nur den Userspace.
Was ist ein Container-Image und wie unterscheidet es sich von einem Container?
Ein Container-Image ist eine unveränderliche (read-only) Vorlage, die alle notwendigen Dateien, Bibliotheken, Abhängigkeiten und Konfigurationen enthält, um eine Anwendung in einem Container auszuführen.
Merkmale:
Enthält: Code, Laufzeit, Bibliotheken, Umgebungsvariablen
Wird mithilfe eines Dockerfile oder ähnlichem erstellt
Dockerfile
Besteht aus mehreren Schichten (Layers)
Unterschied zu Container:
Image = Vorlage (statisch)
Container = laufende Instanz eines Images (dynamisch)
Portabel
Konsistente Umgebung
Reproduzierbar
Unterstützt Versionierung
Beispiel: Ein nginx-Image kann verwendet werden, um viele gleichartige Container zu starten.
nginx
Was ist der Unterschied zwischen einem Container Image und einem Base Image?
✅ Container Image
Ein vollständiges, ausführbares Abbild eines Containers.
Enthält alles: Base Image + zusätzliche Software + Konfigurationen.
Wird verwendet, um Container-Instanzen zu starten.
Beispiel: Ein Image mit Nginx + vorkonfigurierter Webseite.
✅ Base Image
Das Ausgangsbild für ein Container Image.
Enthält meist nur ein Minimalsystem (z. B. Debian, Alpine).
Dient als Grundlage, auf der weitere Schichten aufgebaut werden.
Beispiel: python:3.12-slim, alpine, ubuntu:20.04.
python:3.12-slim
ubuntu:20.04
🧱 Merke: Base Image = Fundament Container Image = Haus auf dem Fundament
Was ist ein Container in der Informatik und wie funktioniert er?
Ein Container ist eine isolierte, leichtgewichtige Laufzeitumgebung, die eine Anwendung zusammen mit allen benötigten Abhängigkeiten, Bibliotheken und Konfigurationen enthält.
Nutzt den Kernel des Host-Betriebssystems
Startet schneller und ist ressourcenschonender als eine virtuelle Maschine
Wird aus einem Container-Image erzeugt
Läuft in einer isolierten Umgebung (Namespace + Cgroups)
Portabel (läuft überall, wo ein Container-Engine installiert ist)
Konsistente Umgebung in Dev, Test und Prod
Schneller Start, einfache Skalierbarkeit
Geringe Ressourcenanforderung
Was ist eine virtuelle Maschine (VM) und wie funktioniert sie?
Eine virtuelle Maschine (VM) ist ein vollständig emuliertes Computersystem, das auf einem physischen Host-Rechner läuft. Jede VM enthält ein eigenes Gastsystem (OS), virtuelle Hardware und isolierte Ressourcen.
Läuft auf einem Hypervisor (z. B. VirtualBox, VMware, KVM)
Enthält komplettes Betriebssystem
Trennung vom Host-System durch vollständige Virtualisierung
Starke Isolation
Unterstützt unterschiedliche Betriebssysteme auf einem Host
Gut für Legacy-Anwendungen
Nachteile:
Höherer Ressourcenverbrauch (RAM, CPU, Speicher)
Längere Startzeiten als Container
Was ist ein Betriebssystem (OS)?
Ein Betriebssystem (Operating System, OS) ist die grundlegende Software, die die Hardware eines Computers verwaltet und eine Umgebung für Anwendungsprogramme bereitstellt.
Besonderheit: Das OS ist Vermittler zwischen Benutzer/Programmen und der Hardware.
Wie unterscheiden sich Container und virtuelle Maschinen (VMs)?
Container sind leichtgewichtig, portabel & schnell – ideal für moderne Cloud-Workloads
VMs bieten mehr Isolation & Flexibilität bei Betriebssystemen – gut für Legacy oder sicherheitskritische Anwendungen
Zusammenfassung:
Container: teilt Kernel, kein eigenes OS
VM: enthält vollständiges Betriebssystem (schwerer, langsamer)
Beispiel: Ein nginx-Container kann in wenigen Sekunden gestartet werden, ohne dass ein komplettes Linux-Betriebssystem installiert werden muss.
Was ist Kubernetes?
Kubernetes ist ein Open-Source-System zur Automatisierung der
Bereitstellung,
Skalierung und
Verwaltung
von containerisierten Anwendungen.
Frage: Was ist ein Pod in Kubernetes?
Ein Pod ist die kleinste ausführbare Einheit in Kubernetes und enthält in der Regel einen oder mehrere Container, die sich Netzwerk, Speicher und Konfiguration teilen. Alle Container in einem Pod laufen gemeinsam auf demselben Node und können direkt miteinander kommunizieren.
Was ist ein Node in Kubernetes?
Ein Node ist ein physischer oder virtueller Rechner innerhalb eines Kubernetes-Clusters, auf dem Pods ausgeführt werden. Jeder Node enthält die notwendige Software wie den Kubelet, Container Runtime (z. B. Docker oder containerd) und andere Komponenten.
Arten:
Master Node (Control Plane): Verwaltung des Clusters
Worker Node: Ausführung der Anwendungen (Pods)
Was ist ein Cluster in Kubernetes?
Ein Cluster ist eine Gruppe von Nodes, die gemeinsam von Kubernetes verwaltet werden. Er bildet die vollständige Umgebung, in der containerisierte Anwendungen laufen und skaliert werden.
Bestandteile:
Control Plane (Steuerung)
Worker Nodes (Ausführung)
Gemeinsame Netzwerkinfrastruktur und Ressourcen
Was ist Docker?
Docker ist eine Plattform zur
Entwicklung,
Auslieferung und
Ausführung
von Anwendungen in Containern.
Hauptfunktionen:
Verpackt Anwendungen und ihre Abhängigkeiten in Containern
Ermöglicht portables, konsistentes Deployment
Verwaltung von Container-Images (Erstellung, Versionierung)
Container-Laufzeitumgebung (Docker Engine)
Vernetzung und Storage für Container
Integration mit Orchestrierungs-Tools (z. B. Kubernetes)
Schnellere und zuverlässigere Bereitstellung
Ressourcenschonend gegenüber VMs
Einfaches Testen und Skalieren von Anwendungen
Was ist der OCI-Standard (Open Container Initiative) und warum ist er wichtig?
Die Open Container Initiative (OCI) ist ein offener Standard für Containerformate und -runtimes.
Ziele:
OCI Image Format: Standard, wie Container-Images aufgebaut sind
OCI Runtime Specification: Definiert, wie Container ausgeführt werden
Wichtiges:
OCI-Images sind mit vielen Container-Tools kompatibel (z. B. Docker, Kubernetes, containerd)
Erlaubt Interoperabilität und Austauschbarkeit von Containern und Runtimes
Fördert offene und herstellerunabhängige Lösungen
Was ist der Kernel des Host-Betriebssystems und welche Rolle spielt er bei Containern?
Der Kernel des Host-Betriebssystems ist der zentrale Teil des Betriebssystems, der Hardware-Ressourcen verwaltet und Schnittstellen für Software bereitstellt.
Rolle bei Containern:
Container teilen sich den Kernel des Host-OS, nutzen also denselben Kernel, anstatt einen eigenen zu starten
Ermöglicht effiziente Isolation durch Namespaces (Trennung von Prozessen, Netzwerk etc.) und cgroups (Ressourcenmanagement)
Spart Ressourcen, da kein eigenes Betriebssystem im Container läuft
Unterschied zu VMs:
VMs haben einen eigenen Kernel im Gast-OS, Container nicht
Schneller Start
Geringere Ressourcenbelastung
Was ist Nginx und wofür wird es verwendet?
✅ Nginx (gesprochen: "Engine-X")
Ein leistungsstarker Webserver und Reverse Proxy
Entwickelt für hohe Performance und Skalierbarkeit
🔧 Einsatzgebiete:
Statischer Webserver (z. B. für HTML, CSS, JS)
Reverse Proxy (leitet Anfragen an andere Server weiter)
Load Balancer (Lastverteilung auf mehrere Server)
API-Gateway
TLS/SSL-Terminierung
🚀 Besonderheiten:
Ereignisbasierte Architektur → sehr schnell & ressourcenschonend
Häufig in Docker-Containern und Microservices-Architekturen verwendet
Wann wird Docker eingesetzt?
Wenn einzelne Container auf einem einzelnen Host gebaut, ausgeführt und verwaltet werden sollen
Für eine einfache, schnelle Lösung zur Containerisierung
In Entwicklungs-, Test- oder kleinen Produktionsumgebungen
Wann wird Kubernetes eingesetzt?
Wenn viele Container über mehrere Rechner (Cluster) orchestriert werden sollen
Wenn automatische Skalierung, Load Balancing und Ausfallsicherheit wichtig sind
Für komplexe Microservice-Architekturen
Für Continuous Deployment und Rollbacks
Wie passen Kubernetes und Docker zusammen?
Früher: Kubernetes nutzte Docker als Container-Runtime.
Heute: Kubernetes nutzt andere Runtimes (z. B. containerd, CRI-O), nicht mehr direkt Docker Engine.
Trotzdem: Kubernetes kann weiterhin Docker-Images verwenden (weil sie dem offenen Standard OCI folgen).
Docker-Container für Web-Apps → z. B. nginx, node, python, flask, react-app → Anwendung: Microservices, schnelle Skalierung in der Cloud
flask
react-app
CI/CD-Pipelines mit Docker → z. B. GitLab CI Runner in einem Container
Kubernetes-Pods → z. B. mehrere Container in einem Pod für Web + DB + Proxy
Containerisierte Datenbanken → z. B. postgres, mongo, redis in Entwicklung/Testumgebungen
postgres
mongo
redis
Testen verschiedener Betriebssysteme → z. B. Windows-VM auf Linux mit VirtualBox
Legacy-Anwendungen → z. B. alte Windows-Software in isolierter VM weiterbetreiben
Servervirtualisierung → z. B. mehrere Ubuntu-VMs auf einem ESXi-Host
Cloud-VMs (IaaS) → z. B. AWS EC2, Azure Virtual Machines, Google Compute Engine
Welche Kernfunktion hat Kubernetes?
Orchestrierung von Containern
Welche Funktionen bietet Kubernetes?
Verwaltung von Clustern aus vielen Rechnern
Automatisches Skalieren von Anwendungen
Selbstheilung (Restart, Ersatz fehlerhafter Container)
Service Discovery & Load Balancing
Rollouts und Rollbacks von Updates
Welche Vorteile bietet Kubernetes?
Hohe Verfügbarkeit
Effiziente Ressourcennutzung
Unabhängigkeit von Cloud-Anbietern
Was bedeutet Service Discovery in Kubernetes?
Service Discovery ermöglicht es Anwendungen, andere Dienste im Cluster automatisch zu finden, ohne dass feste IP-Adressen bekannt sein müssen. Kubernetes stellt dafür interne DNS-Namen und virtuelle IPs bereit
Was bedeutet Load Balancing in Kubernetes?
Load Balancing verteilt den Netzwerkverkehr automatisch auf mehrere Pods (Instanzen eines Dienstes), um eine gleichmäßige Auslastung zu erreichen und die Verfügbarkeit zu erhöhen.
Was sind DNS-Namen?
DNS-Namen (Domain Name System Namen) sind menschenlesbare Adressen (z. B. www.beispiel.de), die in IP-Adressen übersetzt werden. Sie erleichtern den Zugriff auf Rechner und Dienste im Netzwerk, ohne sich Zahlenfolgen merken zu müssen.
Welche Kernfunktion hat Docker?
Verpackt Anwendungen und ihre Abhängigkeiten in Containern.
Welche Deployments-Vorteile bietet Docker?
Portables, konsistentes Deployment
Welche technischen Komponenten stellt Docker bereit?
Welche Vorteile bietet Docker?
Ressourcenschonender als VMs
Was ist die Kurz-Zusammenfassung: Docker vs. Kubernetes?
Docker = Container erstellen und ausführen
Kubernetes = Container in großem Maßstab orchestrieren und verwalten
Nenne Einsatzbeispiele für Docker.
Lokale Entwicklung: Entwickler bauen und testen Apps in Containern auf dem eigenen Rechner
Kleine Webanwendung oder Dienst: Ein einzelner Server hostet eine Container-App (z. B. WordPress oder Node.js)
CI/CD-Pipeline: Containerisierung für automatisierte Tests und Deployments
Nenne Einsatzbeispiele für Kubernetes.
Großes Unternehmen mit Microservices: Viele Container laufen verteilt, Kubernetes sorgt für Ausfallsicherheit & Lastverteilung
Cloud-native Anwendungen: Apps skalieren dynamisch je nach Last (z. B. E-Commerce-Plattform)
Multi- oder Hybrid-Cloud: Verwaltung von Containern über verschiedene Cloud-Anbieter hinweg
Wie lässt sich der Unterschied zwischen Docker und Kubernetes zusammenfassen?
Docker = ideal für Einstieg, Einzel-Container & kleine Projekte (z. B. lokale Entwicklung, kleine Webapp)
Kubernetes = notwendig für komplexe Anwendungen mit hoher Verfügbarkeit, Skalierbarkeit & Lastverteilung
Was ist ein Kubernetes Namespace?
Ein Namespace ist eine logische Partition innerhalb eines Kubernetes-Clusters, die Ressourcen voneinander trennt und organisiert.
Wofür werden Kubernetes Namespaces verwendet?
Strukturierung und Organisation von Ressourcen
Trennung von Projekten, Teams oder Umgebungen (z. B. Dev, Test, Prod)
Ermöglichen von Zugriffs- und Ressourcenbeschränkungen (RBAC, Resource Quotas)
Was bedeutet „Shared Namespace“?
Ein Namespace, der von mehreren Teams oder Anwendungen gemeinsam genutzt wird. Dadurch können Ressourcen kollidieren (z. B. Namenskonflikte), und Zugriffsrechte müssen sorgfältig geregelt werden.
Wann ist es sinnvoll, einen „Shared Namespace“ zu verwenden?
Für kleine Teams oder Projekte mit wenigen Ressourcen
Wenn keine strikte Trennung von Berechtigungen notwendig ist
Für einfache Entwicklungs- oder Testumgebungen
Welche Risiken bestehen bei einem „Shared Namespace“?
Namenskonflikte bei Ressourcen
Weniger Isolation (Teams beeinflussen sich gegenseitig)
Schwierigere Umsetzung von Security und Quotas
Was sind die Hauptaufgaben eines Betriebssystems (OS)?
Hauptaufgaben:
Prozessverwaltung: Starten, Beenden und Verwalten von Prozessen
Speicherverwaltung: Zuteilung und Freigabe von RAM
Dateisystem: Verwaltung von Dateien und Verzeichnissen
Geräteverwaltung: Ansteuerung von Ein-/Ausgabegeräten (z. B. Drucker, Festplatte)
Benutzeroberfläche: Shell oder GUI zur Interaktion
Sicherheitsmanagement: Rechteverwaltung, Schutz von Ressourcen
Nenne Beispiele für Betriebssysteme.
Windows, macOS, Linux, Android, iOS
Zuletzt geändertvor einem Monat