📝 BLOG

Docker und Containerization: Grundlegende Konzepte und Verwendung

Docker verpackt Anwendungen in Container für konsistente und portable Bereitstellung. Dieser Leitfaden behandelt Docker-Grundlagen, Dockerfile-Schreiben und Container-Management.

Aktualisiert:

Erstellt von: Gsetsoft

Docker und Containerization: Grundlegende Konzepte und Verwendung

Was ist Docker?

Docker ist eine Plattform, die Anwendungen und ihre Abhängigkeiten in Container verpackt. Container sind leichtgewichtige, isolierte Laufzeitumgebungen.

VM vs Container: Virtuelle Maschinen führen ein vollständiges Betriebssystem aus (GBs). Container teilen den Host-OS-Kernel und belegen MBs.

Konsistenz: Löst das 'Funktioniert auf meinem Rechner'-Problem. Entwicklungs-, Test- und Produktionsumgebungen verwenden denselben Container.

Portabilität: Container laufen auf jeder Docker-unterstützten Plattform (Linux, Windows, Mac, Cloud).

Docker Kernkonzepte

Image: Vorlage für einen Container. Als Read-Only-Layer gespeichert. Aus Dockerfile gebaut.

Container: Laufende Instanz eines Images. Jeder Container läuft als isolierter Prozess.

Dockerfile: Textdatei, die definiert, wie ein Image gebaut wird. Enthält Anweisungen wie FROM, RUN, COPY, CMD.

Registry: Repository, das Images speichert und verteilt. Docker Hub ist die beliebteste öffentliche Registry.

Volume: Speicher zum persistenten Speichern von Container-Daten. Daten bleiben erhalten, auch wenn der Container gelöscht wird.

Dockerfile schreiben

FROM node:18-alpine: Node.js 18 (Alpine Linux) als Basis-Image verwenden. Alpine ist ein kleines Basis-Image.

WORKDIR /app: Arbeitsverzeichnis auf /app setzen. Alle nachfolgenden Befehle laufen in diesem Verzeichnis.

COPY package*.json ./: package.json und package-lock.json kopieren. Abhängigkeiten mit RUN npm install installieren.

COPY . .: Gesamten Quellcode kopieren. Production Build mit RUN npm run build erstellen.

EXPOSE 3000: Angeben, dass der Container auf Port 3000 lauscht. Befehl beim Container-Start mit CMD ["npm", "start"] definieren.

Grundlegende Docker-Befehle

docker build -t myapp:1.0 .: Image aus Dockerfile bauen. Image mit -t taggen (Name:Version).

docker run -p 3000:3000 myapp:1.0: Container ausführen. Host-Port mit -p auf Container-Port mappen.

docker ps: Laufende Container auflisten. docker ps -a: Alle Container auflisten (einschließlich gestoppter).

docker stop <container_id>: Container stoppen. docker rm <container_id>: Container entfernen.

docker images: Lokale Images auflisten. docker rmi <image_id>: Image entfernen.

Docker Compose

Docker Compose ist ein Werkzeug zum Definieren und Verwalten von Multi-Container-Anwendungen. Konfiguriert mit docker-compose.yml Datei.

Services: Jeder Service ist ein Container. Services wie web (Frontend), api (Backend), db (Datenbank) definieren.

Volumes: Volumes für Datenpersistenz definieren. networks: Netzwerke für Inter-Service-Kommunikation erstellen.

docker compose up: Alle Services starten. docker compose down: Alle Services stoppen und entfernen.

docker compose up -d: Im Hintergrund ausführen (detached mode). docker compose logs -f: Logs verfolgen.

Best Practices

Kleine Images: Alpine oder distroless Basis-Images verwenden. Build-Abhängigkeiten mit Multi-Stage Build aus finalem Image entfernen.

Layer Caching: Selten ändernde Layer (Abhängigkeiten) zuerst, häufig ändernde Layer (Code) später COPYen. Optimiert Build-Cache.

.dockerignore: Unnötige Dateien (node_modules, .git, logs) ignorieren. Reduziert Build-Context.

Security: Non-Root-User statt Root verwenden. Benutzer erstellen mit RUN adduser --disabled-password appuser.

Health Check: HEALTHCHECK Anweisung für Container-Gesundheitsprüfung verwenden. Docker startet unhealthy Container automatisch neu.

Ihre Datenschutzwahl

Notwendige Cookies dienen Sicherheit und Sitzungen. Grundlegende Besuche werden gezählt; mit Ihrer Zustimmung aktivieren wir zusätzliche Nutzungsanalysen. Cookie-Richtlinie