Docker

0 64

Einführung in die Container-Technologie

Was ist Docker?

Docker ist eine Open-Source-Plattform zur Automatisierung der Bereitstellung von Anwendungen in leichtgewichtigen, portablen Containern. Die Technologie revolutioniert seit ihrer Einführung 2013 die Art und Weise, wie Software entwickelt, getestet und bereitgestellt wird.

Das Container-Konzept

Ein Docker-Container ist eine standardisierte Softwareeinheit, die Code und alle seine Abhängigkeiten verpackt. Dadurch läuft die Anwendung schnell und zuverlässig von einer Computing-Umgebung zur anderen.

Wie funktioniert ein Container?

Stellen Sie sich einen Container wie einen Frachtcontainer vor. Genau wie ein Frachtcontainer standardisierte Abmessungen hat und überall transportiert werden kann – ob per Schiff, LKW oder Bahn – funktioniert ein Docker-Container auf jedem System, das Docker unterstützt.

Der Container enthält:

  • Die Anwendung selbst
  • Alle benötigten Bibliotheken
  • Systemtools
  • Laufzeitumgebung
  • Konfigurationsdateien

Die wichtigsten Vorteile von Docker

1. Portabilität

Das größte Problem der Softwareentwicklung war lange Zeit: „Es funktioniert auf meinem Rechner!“ Docker löst dieses Problem elegant. Ein Container, der auf Ihrem Laptop läuft, verhält sich exakt gleich auf dem Staging-Server und in der Produktion.

Beispiel aus der Praxis: Ein Entwickler erstellt eine Node.js-Anwendung auf seinem MacBook. Mit Docker läuft diese Anwendung ohne Änderungen auf dem Linux-Server des Kunden, obwohl die Betriebssysteme völlig unterschiedlich sind.

2. Isolation

Jeder Container läuft isoliert vom Host-System und von anderen Containern. Das bedeutet:

  • Keine Konflikte zwischen verschiedenen Anwendungen
  • Erhöhte Sicherheit
  • Eine fehlerhafte Anwendung beeinflusst andere nicht

Beispiel: Sie können PHP 7.4 und PHP 8.2 parallel auf demselben Server laufen lassen, ohne dass sich die Versionen in die Quere kommen.

3. Effizienz

Docker-Container sind extrem leichtgewichtig:

  • Startzeit: Sekunden statt Minuten
  • Ressourcenverbrauch: Minimal, da sie sich den Kernel des Host-Systems teilen
  • Speicherplatz: Ein Container-Image ist oft nur 50-200 MB groß

Vergleich:

  • Virtuelle Maschine starten: 2-5 Minuten
  • Docker-Container starten: 2-5 Sekunden

4. Versionierung und Rollbacks

Docker-Images können versioniert werden wie Code:

bash

myapp:1.0.0
myapp:1.0.1
myapp:1.1.0

Wenn Version 1.1.0 Probleme macht, können Sie in Sekunden zu 1.0.1 zurückkehren.

5. Skalierbarkeit

Bei plötzlich hoher Last können Sie schnell zusätzliche Container hochfahren:

bash

docker run -d myapp:latest
docker run -d myapp:latest
docker run -d myapp:latest

In wenigen Sekunden laufen drei Instanzen Ihrer Anwendung parallel.

Wofür wird Docker eingesetzt?

Webentwicklung

Docker ist ideal für moderne Webprojekte:

  • PHP-Anwendungen: Laravel, Symfony, WordPress
  • JavaScript: Node.js, React, Vue.js
  • E-Commerce: Shopware, Magento, WooCommerce
  • CMS-Systeme: TYPO3, Drupal, Joomla

Microservices-Architektur

Große Anwendungen werden in kleine, unabhängige Services aufgeteilt. Jeder Service läuft in einem eigenen Container.

Beispiel E-Commerce:

  • Container 1: Frontend (React)
  • Container 2: API-Backend (Node.js)
  • Container 3: Produktsuche (Elasticsearch)
  • Container 4: Zahlungsabwicklung (PHP)
  • Container 5: Datenbank (MySQL)

CI/CD-Pipelines

Docker ermöglicht automatisierte Test- und Deployment-Prozesse:

  1. Code-Änderung wird gepusht
  2. Docker-Container wird automatisch gebaut
  3. Automatisierte Tests laufen im Container
  4. Bei Erfolg: Automatisches Deployment

Entwicklungsumgebungen

Statt aufwendiger lokaler Installation:

bash

<em># Ohne Docker: Stunden für Setup</em>
<em># Installation von PHP, MySQL, Nginx, Redis...</em>
<em># Konfiguration, Fehlerbehebung...</em>

<em># Mit Docker: Minuten für Setup</em>
docker compose up -d
<em># Fertig!</em>

Docker in Zahlen

  • Über 20 Millionen Entwickler nutzen Docker
  • Mehr als 13 Millionen Container-Images auf Docker Hub
  • Von allen Fortune 100-Unternehmen eingesetzt
  • Unterstützt von allen großen Cloud-Anbietern (AWS, Azure, Google Cloud)

Häufige Anwendungsfälle

1. Lokale Entwicklung

bash

<em># Komplette Entwicklungsumgebung in Sekunden</em>
docker run -d -p 3306:3306 mysql:8.0
docker run -d -p 6379:6379 redis:alpine
docker run -d -p 9200:9200 elasticsearch:8.0

2. Testing

bash

<em># Tests in isolierter Umgebung</em>
docker run --rm myapp:latest npm test

3. Production Deployment

bash

<em># Identische Umgebung wie Development</em>
docker run -d -p 80:80 myapp:production

Wer profitiert von Docker?

Entwickler

  • Schnelleres Setup neuer Projekte
  • Keine „Works on my machine“-Probleme
  • Einfaches Testen verschiedener Versionen
  • Fokus auf Code statt Infrastruktur

DevOps-Engineers

  • Standardisierte Deployment-Prozesse
  • Einfache Skalierung
  • Bessere Ressourcen-Auslastung
  • Vereinfachtes Monitoring

Unternehmen

  • Schnellere Time-to-Market
  • Reduzierte Infrastrukturkosten
  • Höhere Stabilität und Verfügbarkeit
  • Moderne, zukunftssichere Architektur

Docker vs. traditionelle Deployment-Methoden

Traditionell: LAMP-Stack auf einem Server

Problem: Alle Anwendungen teilen sich Ressourcen
- PHP-Version für alle gleich
- Eine fehlerhafte App kann andere beeinflussen
- Schwierig zu skalieren
- Updates sind riskant

Mit Docker: Isolierte Container

Vorteile:
- Jede App hat eigene PHP-Version
- Komplette Isolation
- Einzelne Apps skalierbar
- Updates risikoarm (Rollback möglich)

Ist Docker schwer zu lernen?

Gute Nachricht: Die Grundlagen sind einfach!

Für den Einstieg reichen wenige Befehle:

bash

docker pull nginx          <em># Image herunterladen</em>
docker run -d nginx        <em># Container starten</em>
docker ps                  <em># Laufende Container anzeigen</em>
docker stop <id>           <em># Container stoppen</em>

Nach 1-2 Stunden kennen Sie die wichtigsten Befehle. Nach einer Woche können Sie produktiv damit arbeiten.

Voraussetzungen für Docker

System-Anforderungen

Linux:

  • 64-Bit-Kernel
  • Mindestens Kernel-Version 3.10

Windows:

  • Windows 10 64-Bit Pro/Enterprise/Education
  • Hyper-V aktiviert (oder WSL 2)

macOS:

  • macOS 10.15 oder neuer
  • Intel- oder Apple-Silicon-Prozessor

Technisches Wissen

Sie sollten vertraut sein mit:

  • Grundlegende Kommandozeilen-Befehle
  • Grundlagen von Webservern und Datenbanken
  • Allgemeines Verständnis von Softwareentwicklung

Kostenfaktor

Docker selbst ist kostenlos (Open Source). Es gibt kostenpflichtige Enterprise-Versionen, aber für die meisten Projekte reicht die kostenlose Community Edition völlig aus.

Zusammenfassung

Docker ist eine revolutionäre Technologie, die:

Entwicklung und Deployment vereinfacht
Konsistenz über alle Umgebungen garantiert
Ressourcen effizient nutzt
Schnelle Skalierung ermöglicht
Von der Industrie als Standard akzeptiert ist

Im nächsten Tutorial schauen wir uns an, wie sich Docker von virtuellen Maschinen unterscheidet und warum Container die bessere Wahl für moderne Anwendungen sind.

Author: Andreas Lang

Sphinx-Flashdesign.de

Andreas Lang konzentriert sich seit zwei Jahrzehnten auf die Webentwicklung und Webdesign mit dem Schwerpunkt PHP, Laravel und Javascript und betreut seine Kunden mit Herz und Seele in allen Bereichen von Entwicklung, Design, Suchmaschinenoptimierung, IT-Recht, IT-Sicherheit etc.