Benutzer-Werkzeuge

Webseiten-Werkzeuge


it-themen:grundlagen:netzwerkdienste:docker

**Dies ist eine alte Version des Dokuments!**

zurĂĽck

Docker – Grundlagen (Images, Container, Volumes, Networks, Compose)

Docker ist eine Container-Technologie, die Anwendungen leichtgewichtig, portabel und isoliert betreibt, ohne komplette virtuelle Maschinen zu benötigen.

Container teilen sich den Host-Kernel, benötigen aber keine eigenen Betriebssysteme → dadurch starten sie extrem schnell und verbrauchen wenig Ressourcen.


1. Warum Docker?

Docker löst typische IT-Probleme:

  • „Läuft auf meinem Rechner, aber nicht bei dir“
  • unterschiedliche Abhängigkeiten / Bibliotheken
  • komplizierte Installationen
  • Versionskonflikte

Mit Docker bekommst du:

  • isolierte Umgebung
  • reproduzierbare Builds
  • portierbare Anwendungen
  • schnelle Deployments
  • perfekt fĂĽr Microservices

2. Container vs virtuelle Maschinen

Container

  • teilen sich den Kernel
  • starten in Sekunden
  • sehr leichtgewichtig
  • ideal fĂĽr Webapps, DBs, Dienste

Virtuelle Maschinen

  • vollständiges OS
  • hohe Isolation
  • größere Ressourcenlast

Vergleich:


 Container:
 Host → Kernel → Container → App

 VM:
 Host → Hypervisor → volles OS → App



3. Docker-Image

Ein Image ist eine Vorlage, aus der Container gestartet werden.

Besteht aus Schichten (Layers):

  • Basis-Image (z. B. Debian, Alpine)
  • App-Dateien
  • Konfiguration
  • Bibliotheken

Images sind:

  • unveränderlich
  • versionierbar
  • portabel

Beispiele:


 nginx:latest
 mariadb:11
 ubuntu:22.04



4. Container

Ein Container ist eine laufende Instanz eines Images.

Merkmale:

  • isoliert vom Rest des Systems
  • hat eigene Prozess-ID, eigenes Netzwerk
  • nutzt das Image als Grundlage
  • nicht persistent (ohne Volume gehen Daten verloren)

Befehle:


 docker run
 docker ps
 docker stop
 docker logs



5. Volumes – Persistente Daten

Container-Daten sind flĂĽchtig.
FĂĽr dauerhafte Speicherung nutzt man Volumes.

Beispiele:

  • Datenbanken
  • Konfigurationen
  • Zertifikate
  • Uploads (z. B. Nextcloud)

Volume-Typen:

  • named volumes („docker-volume“)
  • bind mounts (z. B. /opt/stacks/app/data)

 Container → /data ↔ /opt/stacks/app/data



6. Docker Networks

Container kommunizieren ĂĽber Netzwerke.

Arten:

bridge

Standard-Netzwerk, Container → Container.

host

Container nutzt Host-Netzwerk direkt.

macvlan

Container bekommt eigene MAC-Adresse im LAN.

overlay

FĂĽr Swarm/Kubernetes-Cluster.

Beispiel:


 docker network create mynet



7. Docker Compose

Docker Compose definiert komplette Anwendungen als YAML-Datei.

Einfaches Beispiel:


 version: "3" # kann weggelassen werden da veraltet

 services:
   web:
     image: nginx
     ports:
       - "80:80"
     volumes:
       - ./html:/usr/share/nginx/html


Vorteile:

  • mehrere Container auf einmal starten
  • verständliche Struktur
  • Netzwerke, Volumes, Umgebungsvariablen definierbar
  • ideal fĂĽr jede moderne Architektur

Starten:


 docker compose up -d



8. Registries

Registries speichern Images.

Ă–ffentliche:

  • Docker Hub
  • GitHub Container Registry

Private:

  • Harbor
  • GitLab Registry
  • selbst gehosteter Registry-Container

9. Sicherheit in Docker

  • Container nicht als root ausfĂĽhren
  • eigene Netzwerke nutzen
  • Secrets sicher speichern (docker secrets)
  • nicht „latest“ verwenden
  • Images regelmäßig aktualisieren
  • wenig privilegierte Container starten (–cap-drop)
  • Traefik/Nginx vor Webservices setzen

10. Realwelt-Beispiele (praktisch & TG-tauglich)

Webserver + Datenbank


 web (nginx)
 db  (mariadb)


Dein Home-Lab

  • Traefik
    • Portainer
      * Vaultwarden
      * Nextcloud
      * Matrix
      * Mailserver
      * Monitoring (Grafana, Promtail, Loki)
      * CrowdSec
      * LDAP + Samba etc.

    Unternehmensumgebung

  • Microservices
    • Load Balancer
      * CI/CD Pipelines
      * API Gateways

    —

11. Best Practices

  • eindeutige Verzeichnisstruktur (/opt/stacks/)
    • alles in Docker Compose statt Einzellauf
      * Secrets in .env oder docker secrets
      * Healthchecks nutzen
      * Backups der Volumes nicht vergessen
      * Logs zentral erfassen (Loki, ELK)

    —

Zusammenfassung

  • Docker nutzt Container statt VMs
    • Images als Vorlage → Container als laufende Instanz
      * Volumes speichern Daten permanent
      * Docker Networks verbinden Container
      * Compose verwaltet komplette Anwendungen
      * Container sind leicht, schnell und portabel
      * Sicherheit ist wichtig (root vermeiden, Updates)
      * Container sind Standard in DevOps & modernen IT-Umgebungen
it-themen/grundlagen/netzwerkdienste/docker.1764851730.txt.gz · Zuletzt geändert: von lars