CodeGym /Kurse /Docker SELF /Gründe, Docker zu nutzen

Gründe, Docker zu nutzen

Docker SELF
Level 10 , Lektion 3
Verfügbar

9.1 Microservice-Architektur

Docker ist ein unverzichtbares Tool für moderne Softwareentwicklung geworden. Es hilft dir dabei, Applikationen in isolierten Containern zu erstellen, zu starten und zu deployen, was sie praktischer, stabiler und einfacher im Umgang macht. In dieser Vorlesung schauen wir uns Beispiele an, wie Docker das Leben von Entwicklern und Administratoren erheblich erleichtert.

Problem

Die Entwicklung von monolithischen Anwendungen bringt oft Schwierigkeiten bei Wartung und Skalierung mit sich. Jede Änderung in einem Teil kann sich auf andere Teile auswirken, was Updates und Tests komplizierter macht.

Docker-Lösung

Docker ermöglicht die Einführung einer Microservice-Architektur, indem es jeden Service in einen separaten Container verpackt. Das sorgt für Unabhängigkeit und Isolation der Microservices.

Beispiel

Nehmen wir an, du hast eine Anwendung mit drei Microservices: Nutzer, Bestellungen und Zahlungen. Mit Docker kannst du drei Container erstellen:

Terminal

docker run -d --name users-service users-image
docker run -d --name orders-service orders-image
docker run -d --name payment-service payment-image 

9.2 Continuous Integration und Delivery (CI/CD)

Problem

Entwicklung, Testing und Deployment nehmen oft viel Zeit in Anspruch, besonders wenn die Umgebungen unterschiedlich sind.

Lösung mit Docker

Docker hilft dabei, eine einheitliche Umgebung für alle Entwicklungsphasen zu schaffen. Das garantiert, dass die Anwendung überall gleich funktioniert - von der Entwicklung bis zur Produktion.

Beispiel

Das Setup von CI/CD mit Docker ermöglicht die Automatisierung von Build, Testing und Deployment:

Image-Build:

Terminal


docker build -t my-app .

Tests ausführen:

Terminal


docker run my-app ./run-tests.sh

Deployment:

Terminal


docker push my-app:latest
ssh user@production-server "docker pull my-app:latest && docker run -d my-app"

9.3 Portabilität und Konsistenz

Problem

Oft läuft eine Anwendung auf einem Rechner, weigert sich jedoch, auf einem anderen zu starten, weil es Unterschiede in den Einstellungen oder Versionen der Abhängigkeiten gibt.

Docker-Lösung

Docker ermöglicht es, eine Anwendung mit allen ihren Abhängigkeiten in einen Container zu verpacken, der garantiert in jeder Umgebung funktioniert.

Beispiel

Mit Dockerfile kann man die Abhängigkeiten und Befehle zum Starten der Anwendung beschreiben:

dockerfile

FROM node:14
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["npm", "start"]

Jetzt wird die Anwendung stabil sowohl auf dem lokalen Rechner als auch auf einem Server oder in der Cloud laufen.

9.4 Sicherheit gewährleisten

Problem

Das Deployment von Anwendungen kann anfällig sein, besonders wenn Third-Party-Bibliotheken und Tools verwendet werden.

Lösung mit Docker

Docker bietet Container-Isolation, was die Risiken reduziert. Container arbeiten unabhängig und minimieren dadurch die Auswirkungen auf das System.

Beispiel

Verwende Parameter, um Ressourcen einzuschränken und die Sicherheit zu verbessern:

Terminal


docker run -d --name secure-app --memory="512m" --cpus="1" --security-opt=no-new-privileges my-secure-app

9.5 Testen und Automatisierung

Problem

Das Testen in verschiedenen Konfigurationen benötigt Zeit und kann die Hauptumgebung beeinflussen.

Lösung mit Docker

Docker erlaubt es, isolierte Testumgebungen zu erstellen, ohne das Hauptsystem zu beeinträchtigen.

Beispiel

Beispiel für den Start einer Datenbank und einer Anwendung in einer Testumgebung:

Terminal


docker run -d --name test-db -e POSTGRES_PASSWORD=mysecretpassword postgres
docker run -d --name test-app --link test-db:db my-app 

9.6 Cloud Computing und Skalierung

Problem

Die Skalierung von Anwendungen in der Cloud kann schwierig und teuer sein.

Lösung mit Docker

Docker vereinfacht die Skalierung durch die Integration mit Cloud-Plattformen wie AWS, Azure und Google Cloud.

Beispiel

Mit Docker und Kubernetes kannst du die Skalierung ganz einfach einstellen. Hier ist ein Beispiel für eine yaml-Datei. Es kann momentan etwas unklar sein, aber wir werden uns nach und nach damit vertraut machen.

yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app
          image: my-app:latest
          ports:
            - containerPort: 80
1
Опрос
Grundlegende Docker-Befehle,  10 уровень,  3 лекция
недоступен
Grundlegende Docker-Befehle
Grundlegende Docker-Befehle
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION