Was ist ein Base Image (Basis-Image) im Kontext von Containern (z. B. Docker)?
Ein Base Image ist das grundlegende Image, auf dem ein Container-Image aufbaut. Es enthält ein minimales Betriebssystem oder eine Laufzeitumgebung und dient als Startpunkt für weitere Schichten (Layers) im Image.
Beispiele:
ubuntu, alpine, node, python – offizielle Basis-Images
ubuntu
alpine
node
python
Merkmale:
Kann minimal (z. B. scratch, alpine) oder vollständig sein
scratch
Dient als Ausgangspunkt im Dockerfile (FROM-Anweisung)
Dockerfile
FROM
Enthält meist nur das Nötigste (z. B. Paketmanager, Shell)
Vorteile:
Wiederverwendbarkeit
Standardisierte Umgebung
Einfaches Layer-Modell
Hinweis: Ein gutes Base Image reduziert die Angriffsfläche und die Größe des finalen Images.
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.
Enthält: Code, Laufzeit, Bibliotheken, Umgebungsvariablen
Wird mithilfe eines Dockerfile oder ähnlichem erstellt
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 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
Vergleich mit VM:
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 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
Vergleich mit Containern:
VM: schwergewichtig, mit eigenem OS
Container: leichtgewichtig, teilt Host-Kernel
Beispiel: Eine VM mit Windows kann unter Linux laufen – ideal für Tests oder Software mit OS-Abhängigkeit.
Was ist ein Betriebssystem (OS) und welche Hauptaufgaben erfüllt es?
Ein Betriebssystem (Operating System, OS) ist die grundlegende Software, die die Hardware eines Computers verwaltet und eine Umgebung für Anwendungsprogramme bereitstellt.
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
Beispiele für Betriebssysteme:
Windows, macOS, Linux, Android, iOS
Besonderheit: Das OS ist Vermittler zwischen Benutzer/Programmen und der Hardware.
Wie unterscheiden sich Container und virtuelle Maschinen (VMs) im Detail?
🔍 Vergleich Container vs. VM:
Kriterium
Container
Virtuelle Maschine (VM)
Isolation
Prozess-/User-Isolation über OS
Vollständig (eigenes OS)
OS-Abhängigkeit
Teilt Kernel mit Host
Eigenes Gastsystem nötig
Ressourcenverbrauch
Gering
Hoch (inkl. RAM, CPU, Speicher für OS)
Startzeit
Sehr schnell (Sekunden)
Langsam (mehrere Sekunden bis Minuten)
Größe
Klein (MB-Bereich)
Groß (oft GB-Bereich)
Flexibilität (OS)
Muss OS des Hosts teilen (z. B. Linux)
Beliebiges OS möglich (Linux, Windows...)
Verwaltung
Leichtgewichtig, orchestrierebar
Schwerer, komplexer (z. B. mit Hypervisor)
Sicherheit
Geringere Isolation, Kernel-Sharing
Bessere Isolation durch eigenes OS
Einsatzbereich
Microservices, CI/CD, Cloud-native
Legacy-Apps, isolierte Systeme, VDI
📌 Fazit:
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
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
Was ist Kubernetes und wofür wird es verwendet?
Kubernetes ist ein Open-Source-System zur Automatisierung der Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen.
Funktionen:
Orchestrierung von Containern (z. B. Docker)
Verwaltung von Clustern aus vielen Rechnern
Automatisches Skalieren von Anwendungen
Selbstheilung (Restart, Ersatz fehlerhafter Container)
Service Discovery & Load Balancing
Rollouts und Rollbacks von Updates
Begriffserklärung:
Pod: Kleinste Einheit, meist ein oder mehrere Container
Node: Physischer oder virtueller Rechner im Cluster
Cluster: Gruppe von Nodes, die Kubernetes verwaltet
Hohe Verfügbarkeit
Effiziente Ressourcennutzung
Unabhängigkeit von Cloud-Anbietern
Was ist Docker und welche Hauptfunktionen bietet es?
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 Unterschied zwischen Docker und Kubernetes?
Aspekt
Docker
Kubernetes
Definition
Plattform zur Containerisierung und zum Betrieb von Containern
Orchestrierungsplattform zur Verwaltung vieler Container in Clustern
Fokus
Erstellen, Verteilen und Ausführen von einzelnen Containern
Automatisiertes Deployment, Skalierung & Management von Container-Clustern
Funktionalität
Container-Engine, Image-Management, Netzwerk & Storage
Automatisches Skalieren, Load Balancing, Selbstheilung, Rollouts
Skalierung
Manuell oder mit Docker Swarm (eingeschränkt)
Voll automatisierte Skalierung und Verwaltung
Einsatzgebiet
Einzelne Hosts oder kleine Umgebungen
Große, verteilte Systeme mit vielen Nodes
Kurz gesagt: Docker hilft dir, Container zu bauen und auszuführen. Kubernetes hilft dir, viele Container über viele Rechner hinweg zu orchestrieren und zu verwalten.
Kubernetes & Docker – wie passen sie zusammen?
Früher: Kubernetes nutzte Docker als Standard-Container-Runtime, um Container zu starten und zu verwalten.
Heute: Kubernetes hat die Unterstützung für Docker als Runtime (genauer: Docker Engine) offiziell eingestellt (ab Kubernetes 1.20+). Stattdessen werden andere Container-Runtimes verwendet, die dem Container Runtime Interface (CRI) entsprechen, z. B.:
containerd (ein Bestandteil von Docker, aber auch unabhängig nutzbar)
CRI-O
andere CRI-konforme Runtimes
Warum? Docker selbst ist eine komplette Plattform mit CLI, Image-Management etc., während Kubernetes nur eine Runtime zum Starten und Verwalten von Containern braucht. Für diesen Zweck sind schlankere Runtimes besser geeignet.
Kurz gesagt:Kubernetes kann mit Docker-Images arbeiten (weil sie dem OCI-Standard folgen), aber es nutzt meist keine Docker Engine mehr direkt als Container-Laufzeit.
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:
Standardisierung von Container-Image-Formaten
Standardisierung von Container-Laufzeit-Spezifikationen
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
Bestandteile:
OCI Image Format: Standard, wie Container-Images aufgebaut sind
OCI Runtime Specification: Definiert, wie Container ausgeführt werden
Wann wird Docker und wann Kubernetes eingesetzt?
Docker wird genutzt, wenn:
Du einzelne Container auf einem einzelnen Host bauen, ausführen und verwalten willst
Du eine einfache, schnelle Lösung für Containerisierung brauchst
Du Entwicklungs-, Test- oder kleine Produktionsumgebungen hast
Kubernetes wird genutzt, wenn:
Du viele Container über mehrere Rechner (Cluster) orchestrieren möchtest
Automatische Skalierung, Load Balancing, Ausfallsicherheit wichtig sind
Komplexe Microservice-Architekturen verwaltet werden sollen
Du Continuous Deployment und Rollbacks benötigst
Kurz: Docker = Container erstellen und ausführen
Kubernetes = Container in großem Maßstab orchestrieren und verwalten
———
Docker – Einsatzbeispiele:
Lokale Entwicklung: Entwickler bauen und testen ihre App schnell in Containern auf dem eigenen Rechner.
Kleine Webanwendung oder Dienst: Ein einzelner Server hostet eine Container-App (z. B. ein kleines WordPress oder eine Node.js-App).
CI/CD-Pipeline: Containerisierung für automatisierte Tests und Deployment in Dev-Umgebungen.
Kubernetes – Einsatzbeispiele:
Großes Unternehmen mit Microservices: Viele Container laufen verteilt auf mehreren Servern, Kubernetes sorgt für Ausfallsicherheit und Lastverteilung.
Cloud-native Anwendungen: Dynamisches Skalieren von Apps je nach Nutzerlast (z. B. E-Commerce-Plattform mit wechselnden Besuchern).
Multi-Cloud- oder Hybrid-Cloud-Umgebungen: Kubernetes verwaltet Container über verschiedene Cloud-Anbieter hinweg.
Zusammenfassung:
Docker ist ideal für den Einstieg, Einzel-Container und kleine Projekte.
Kubernetes ist notwendig, wenn Anwendungen komplexer werden, hohe Verfügbarkeit und Skalierbarkeit gefragt sind.
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
Zuletzt geändertvor 9 Tagen