Zurück zur Startseite

So verwenden Sie Docker für Anfänger: Ein praktischer Leitfaden

Dieses umfassende Docker-Tutorial lehrt Anfänger, wie man Anwendungen mit Docker containerisiert. Es behandelt Kernkonzepte, Installation, Ausführen von Containern, Erstellen benutzerdefinierter Images mit Dockerfiles und Verwalten von Multi-Container-Anwendungen mit Docker Compose.

Docker für Anfänger: Containerisieren Sie Ihre erste App
Advertisement 728x90

Docker für Einsteiger: Ein praktischer Leitfaden zur Containerisierung

Docker für Einsteiger: Ein praktischer Leitfaden zur Containerisierung

Jahrelang war der Satz „Auf meinem Rechner funktioniert es“ der Fluch der Softwareentwicklung. Wenn Sie Entwickler, Systemadministrator oder IT-Experte sind und verstehen möchten, wie Docker für Einsteiger funktioniert, sind Sie hier genau richtig. Docker löst dieses Problem, indem es eine leistungsstarke, leichtgewichtige Lösung bietet, um Anwendungen in isolierten Umgebungen namens Container zu verpacken und auszuführen – und so sicherstellt, dass sie überall konsistent funktionieren, vom Laptop bis zur Cloud.

Was Sie lernen werden

Am Ende dieses Leitfadens verstehen Sie die Kernkonzepte von Docker, führen Ihren ersten Container aus, erstellen ein benutzerdefiniertes Image und verwalten Multi-Container-Anwendungen mit Docker Compose. Sie werden einen klaren, wiederholbaren Prozess zur Containerisierung Ihrer eigenen Anwendungen mitnehmen, der es Ihnen ermöglicht, Ihre Entwicklungs- und Bereitstellungsabläufe zu optimieren.

Google AdInline article slot

Was ist Docker und warum ist es wichtig?

Docker ist eine offene Plattform, die entwickelt wurde, um das Erstellen, Bereitstellen und Ausführen von Anwendungen zu vereinfachen. Dies erreicht Docker, indem es Ihnen ermöglicht, Ihre Anwendungen von Ihrer Infrastruktur zu trennen und Ihre Software sowie deren Abhängigkeiten als eine einzige, portable Einheit zu behandeln.

Stellen Sie sich Docker als ein Containersystem für Software vor. So wie ein physischer Schiffscontainer jede beliebige Fracht aufnehmen und per Schiff, Zug oder LKW transportiert werden kann, kann ein Docker-Container jede Anwendung mit ihren Abhängigkeiten aufnehmen und auf jedem System mit Docker konsistent ausführen. Diese Standardisierung hat Docker zum De-facto-Standard für die Verwaltung von Cloud-nativen Anwendungen gemacht. Die öffentliche Registry Docker Hub hostet über 14 Millionen Anwendungs-Images und liefert monatlich mehr als 11 Milliarden Image-Downloads aus.

Hauptvorteile der Nutzung von Docker

  • Portabilität und Konsistenz: Container laufen auf jedem Rechner mit Docker (Linux, Windows, macOS) und eliminieren umgebungsspezifische Fehler.
  • Leichtgewichtig und schnell: Im Gegensatz zu traditionellen virtuellen Maschinen (VMs) teilen Container den Kernel des Host-Betriebssystems, was sie wesentlich kleiner macht (Megabyte statt Gigabyte) und sie in Millisekunden starten lässt.
  • Isolation und Effizienz: Container sind voneinander und vom Hostsystem isoliert, was die Sicherheit verbessert und es ermöglicht, mehrere Anwendungen ohne Konflikte auszuführen.
  • DevOps und CI/CD: Container sind ein Eckpfeiler moderner CI/CD-Pipelines und ermöglichen schnelles Testen und Bereitstellen.

Grundlegende Konzepte verstehen: Images und Container

Bevor wir tiefer eintauchen, ist es entscheidend, die Beziehung zwischen einem Image und einem Container zu verstehen. Dies sind die beiden grundlegendsten Konzepte in Docker.

Google AdInline article slot
  • Docker-Image: Ein Image ist ein leichtgewichtiges, eigenständiges, ausführbares Softwarepaket, das alles enthält, was zum Ausführen einer Software benötigt wird – den Code, eine Laufzeitumgebung, Systemtools, Bibliotheken und Einstellungen. Es ist eine schreibgeschützte Vorlage, ähnlich einem Snapshot oder Bauplan. Beispielsweise ist nginx:alpine ein vorgefertigtes Image für den NGINX-Webserver.
  • Docker-Container: Ein Container ist eine ausführbare Instanz eines Images. Sie können einen Container mit der Docker-API oder der CLI erstellen, starten, stoppen, verschieben oder löschen. Es ist das „laufende“ Image in Ihrem System.

Ihre ersten Schritte mit Docker

1. Docker installieren

Um zu beginnen, müssen Sie Docker installieren. Der einfachste Weg unter Windows oder macOS ist das Herunterladen und Installieren von Docker Desktop von der offiziellen Docker-Website. Es enthält alles, was Sie brauchen – die Docker Engine, CLI und Compose. Für Linux-Benutzer können Sie die Docker Engine mit dem Paketmanager Ihrer Distribution installieren.

Nach der Installation öffnen Sie ein Terminal oder eine Eingabeaufforderung und überprüfen die Installation:

docker --version

2. Ihren ersten Container ausführen

Lassen Sie uns einen „Hello World“-Container ausführen, um sicherzustellen, dass alles funktioniert. Dies ist der traditionelle erste Schritt, um zu verstehen, wie Docker für Einsteiger funktioniert.

Google AdInline article slot
docker run hello-world

Dieser Befehl führt mehrere Schritte aus: Er prüft, ob das hello-world-Image lokal vorhanden ist, lädt es bei Bedarf von Docker Hub herunter und erstellt und startet dann einen Container aus diesem Image. Der Container gibt eine Willkommensnachricht aus und beendet sich dann. Dieser Ablauf – lokale Prüfung, Abrufen aus einer Registry und dann Ausführen – ist der Kern der Arbeit mit Docker.

3. Einen echten Webserver ausführen

Machen wir es interessanter, indem wir einen echten Webserver, NGINX, im Hintergrund ausführen. Dieser Befehl führt drei wesentliche Flags ein:

docker run -d -p 8080:80 --name mywebserver nginx
  • -d (Detached): Führt den Container im Hintergrund aus.
  • -p 8080:80 (Publish): Leitet Port 8080 auf Ihrem Host-Rechner an Port 80 im Container weiter. Sie können den Webserver nun unter http://localhost:8080 erreichen.
  • --name mywebserver: Gibt dem Container einen benutzerfreundlichen Namen anstelle einer zufälligen ID.

Öffnen Sie nun Ihren Browser und gehen Sie zu http://localhost:8080. Sie sollten die NGINX-Willkommensseite sehen! Dies beweist, dass ein echter Webserver läuft, isoliert in einem Container, und auf Ihrem Rechner zugänglich ist.

Ihr eigenes Docker-Image erstellen

Während die Verwendung vorgefertigter Images nützlich ist, liegt die wahre Stärke von Docker darin, Ihre eigenen Anwendungen zu verpacken. Dies tun Sie mit einem Dockerfile.

Was ist ein Dockerfile?

Ein Dockerfile ist eine einfache Textdatei, die eine Reihe von Anweisungen oder Befehlen enthält, wie ein Docker-Image erstellt werden soll. Es fungiert als Rezept zur Erstellung einer portablen, in sich geschlossenen Umgebung für Ihre Anwendung.

Eine einfache Node.js-Anwendung erstellen

Lassen Sie uns ein einfaches Dockerfile erstellen, um eine Node.js-Anwendung zu containerisieren. Dies gibt Ihnen eine praktische Vorlage, die Sie für viele Projekte anpassen können.

  1. Projektordner erstellen:
    mkdir my-node-app && cd my-node-app
  2. Einfache App erstellen: Erstellen Sie eine Datei namens app.js.
    const http = require('http');
    
    const server = http.createServer((req, res) => {
      res.writeHead(200, { 'Content-Type': 'text/plain' });
      res.end('Hallo, Welt! Meine App läuft in einem Container!\n');
    });
    
    server.listen(3000, () => {
      console.log('Server läuft unter http://localhost:3000/');
    });
  3. Eine package.json erstellen: Erstellen Sie eine Datei namens package.json, um die Abhängigkeiten der App zu deklarieren.
    {
      "name": "my-node-app",
      "version": "1.0.0",
      "main": "app.js"
    }

Das Dockerfile schreiben

Erstellen Sie nun eine Datei namens Dockerfile (ohne Erweiterung) im selben Verzeichnis mit folgendem Inhalt:

FROM node:18-alpine
WORKDIR /app
COPY package.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]

Lassen Sie uns jeden Befehl aufschlüsseln:

  • FROM node:18-alpine: Dies initialisiert den Build von einem Basis-Image. Wir verwenden das offizielle Node.js Version 18 Image basierend auf Alpine Linux, einer sehr kleinen Linux-Distribution, die unser Image viel leichter macht.
  • WORKDIR /app: Setzt das Arbeitsverzeichnis für alle nachfolgenden RUN-, CMD-, COPY- und ADD-Anweisungen. Wenn das Verzeichnis nicht existiert, wird es erstellt.
  • COPY package.json ./: Kopiert die package.json-Datei aus Ihrem lokalen Verzeichnis in das aktuelle Arbeitsverzeichnis im Image.
  • RUN npm install: Führt den Befehl npm install im Container aus, um alle in package.json definierten Abhängigkeiten zu installieren.
  • COPY . .: Kopiert den Rest Ihres Anwendungsquellcodes aus Ihrem lokalen Verzeichnis in das Arbeitsverzeichnis im Image.
  • EXPOSE 3000: Teilt Docker mit, dass der Container zur Laufzeit auf Port 3000 lauscht.
  • CMD ["node", "app.js"]: Gibt den Befehl an, der ausgeführt wird, wenn ein Container aus diesem Image gestartet wird.

Ihr Image erstellen und ausführen

  1. Image erstellen: Führen Sie in Ihrem Terminal den Befehl docker build aus:

    docker build -t my-node-app:1.0 .
    • -t my-node-app:1.0: Taggt Ihr Image mit einem Namen und einer Version.
    • .: Teilt Docker mit, im aktuellen Verzeichnis nach dem Dockerfile zu suchen.
  2. Container ausführen: Führen Sie nun Ihr neu erstelltes Image aus und leiten Sie einen Host-Port an den Container-Port weiter:

    docker run -d -p 3000:3000 --name my-running-app my-node-app:1.0

Navigieren Sie in Ihrem Browser zu http://localhost:3000, und Sie sollten die „Hallo, Welt!“-Nachricht sehen. Herzlichen Glückwunsch, Sie haben erfolgreich Ihr eigenes benutzerdefiniertes Docker-Image erstellt und ausgeführt!

Multi-Container-Anwendungen mit Docker Compose verwalten

Moderne Anwendungen bestehen selten nur aus einem einzigen Dienst; sie umfassen oft ein Web-Frontend, eine Datenbank, einen Cache und mehr. Die Verwaltung mit mehreren docker run-Befehlen kann umständlich werden. Docker Compose ist ein Tool, mit dem Sie Multi-Container-Anwendungen in einer einzigen Datei, compose.yaml (oder docker-compose.yml), definieren und ausführen können.

Beispiel: Eine Web-App mit Redis

Hier ist ein Beispiel für eine compose.yaml-Datei, die einen Webdienst und einen Redis-Cache-Dienst definiert:

services:
  web:
    image: nginx:alpine
    ports:
      - "8082:80"
  cache:
    image: redis:alpine

Diese Datei definiert zwei Dienste:

  • web: Verwendet das offizielle nginx:alpine-Image und leitet Port 8082 auf dem Host an Port 80 im Container weiter.
  • cache: Verwendet das offizielle redis:alpine-Image.

Um beide Dienste auszuführen, verwenden Sie einfach die folgenden Befehle:

docker compose up -d
docker compose ps

Dies startet beide Container zusammen in einem dedizierten Netzwerk, sodass sie miteinander kommunizieren können. Sie können alles mit docker compose down stoppen und entfernen.

Quellen

  1. Docker Docs. „Introduction.“
  2. Docker Docs. „Overview of the Docker workshop.“
  3. Docker Docs. „What is Docker?“
  4. Docker Setup for DevOps Beginners (GitHub)
  5. KodeKloud. „Docker Tutorial for Beginners in 2026: First Steps.“
  6. Microsoft Learn. „When to use Docker containers.“
  7. freeCodeCamp. „How to Containerize a Node.js Application Using Docker.“
  8. Docker Docs. „Get started.“
  9. Communications of the ACM. „A Decade of Docker Containers.“
  10. Flatcar. „Getting started with Docker.“
  11. Manning Publications. „Learn Docker in a Month of Lunches.“

— Editorial Team

Advertisement 728x90

Weiterlesen