CodeGym /Kurse /Docker SELF /Grundlegende Begriffe von Docker

Grundlegende Begriffe von Docker

Docker SELF
Level 10 , Lektion 0
Verfügbar

6.1 Images (Abbilder)

Um effizient mit Docker zu arbeiten, musst du ein paar wichtige Begriffe verstehen: Images, Container und Register. Lass uns diese klären und verstehen, wofür sie gebraucht werden und wie sie miteinander interagieren.

Ein Docker Image ist eine Vorlage, aus der Container erstellt werden. Das Image enthält alle notwendigen Komponenten für die Ausführung einer Anwendung: Betriebssystem, Anwendung, Bibliotheken und Abhängigkeiten sowie Konfigurationsdateien. Analog zur OOP: Ein Docker Image ist eine Klasse und ein Container ist ein Objekt dieser Klasse. Images werden mit Hilfe eines Dockerfiles erstellt – einer Textdatei, die die Schritte zur Erstellung des Images beschreibt.

Hauptmerkmale von Images:

  1. Schichtstruktur: Images bestehen aus mehreren Schichten. Es gibt dabei eine Basisschicht, und jede folgende Schicht stellt Änderungen im Vergleich zur vorherigen Schicht dar. Dies spart Speicherplatz und verkürzt die Ladezeiten.
  2. Wiederverwendbarkeit: Dasselbe Image kann verwendet werden, um viele Container zu erstellen.
  3. Portabilität: Images können zwischen unterschiedlichen Systemen übertragen werden, was sie ideal für Entwicklung, Testing und Deployment von Anwendungen in verschiedenen Umgebungen macht.

Beispiele für die Verwendung von Images:

Eigenes Image erstellen: Du kannst dein eigenes Image erstellen, indem du ein Dockerfile schreibst, in dem du die Einstellungen deiner Anwendung und ihrer Abhängigkeiten angibst.

dockerfile

FROM ubuntu:latest
RUN apt-get update && apt-get install -y python3
COPY . /app
CMD ["python3", "/app/app.py"]

Verwendung eines vorhandenen Images: Du kannst Images aus Docker Hub nutzen, um Standardanwendungen wie Webserver oder Datenbanken schnell bereitzustellen.

Terminal

docker pull nginx 

Dieser Befehl lädt das nginx Image aus dem öffentlichen Docker Hub Repository herunter.

6.2 Container

Ein Docker-Container ist eine laufende Instanz eines Image. Container isolieren Anwendungen und deren Abhängigkeiten in einer separaten Laufzeitumgebung, was sie unabhängig von der Host-Maschine und anderen Containern ausführt. Container sind leichtgewichtig, da sie den Kernel des Host-Betriebssystems nutzen und keinen separaten Kernel erstellen, wie es virtuelle Maschinen tun.

Hauptmerkmale von Containern:

  • Isolation: Container isolieren Anwendungen, um deren unabhängige Ausführung zu gewährleisten und Konflikte von Abhängigkeiten zu vermeiden.
  • Leichtgewichtigkeit: Container verbrauchen weniger Ressourcen im Vergleich zu virtuellen Maschinen, da sie kein separates Betriebssystem benötigen.
  • Schnelles Starten: Container starten und stoppen wesentlich schneller als virtuelle Maschinen, was sie ideal für dynamische Umgebungen und Skalierung macht.

Beispiele für die Nutzung von Containern:

Container starten: Du kannst einen Container aus einem Image starten, indem du den Befehl docker run verwendest.

Terminal

docker run -d -p 80:80 --name mynginx nginx

Verwaltung von Containern: Docker bietet Befehle zur Verwaltung von Containern: start, stop, restart, rm und exec.

Terminal

docker stop mynginx
docker rm mynginx

Alle Befehle und ihre Parameter lernst du in den nächsten Vorlesungen kennen.

6.3 Registries

Docker-Registry — ist ein Speicher für Docker-Images. Registries ermöglichen es Entwicklern und Unternehmen, Container-Images zu speichern, zu verwalten und zu verbreiten. Es gibt öffentliche und private Registries.

Hauptmerkmale von Registries:

  • Öffentliche Registries: wie Docker Hub, bieten Zugang zu vielen Images, die von der Community und offiziellen Entwicklern erstellt wurden.
  • Private Registries: werden verwendet, um Images innerhalb einer Organisation zu speichern und zu verwalten, was Zugriffssteuerung und Sicherheit gewährleistet.
  • Integration mit CI/CD: Registries lassen sich nahtlos in Continuous-Integration- und Deployment-Systeme integrieren, was den Prozess der Erstellung und Bereitstellung von Images automatisiert.

Beispiele zur Nutzung von Registries:

1. Docker Hub: öffentliche (und die beliebteste) Registry für Docker-Images. Bietet Zugang zu vielen vorgefertigten (und oft geprüften, was an der Download-Statistik ersichtlich ist) Images.

Terminal

docker pull nginx
docker push myusername/myimage:tag  

2. Private Registry: du kannst eine eigene Registry mit Docker Registry einrichten und verwenden.

Terminal

docker run -d -p 5000:5000 --name registry registry:2
docker tag myimage localhost:5000/myimage
docker push localhost:5000/myimage

Interaktion von Images, Containern und Registries

Diese drei Komponenten sind eng miteinander verbunden und bilden die Grundlage der Arbeit mit Docker:

  • Erstellen eines Images: Ein Entwickler erstellt ein Image mithilfe einer Dockerfile und speichert es lokal.
  • Upload des Images in die Registry: Das Image wird in die Registry hochgeladen (z. B. Docker Hub oder eine private Registry), wo es gespeichert und für andere Benutzer oder Systeme zugänglich gemacht wird.
  • Starten eines Containers: Ein Benutzer lädt das Image aus der Registry herunter und startet einen Container, der die Anwendung isoliert und deren Ausführung gewährleistet.

6.4 Orchestrierung (Orchestration)

Orchestrierung – ist der Prozess der Verwaltung von mehreren Containern in einer verteilten Umgebung. Orchestrierungs-Tools helfen dabei, die Bereitstellung, Skalierung und Verwaltung von Containern zu automatisieren.

  • Kubernetes: Die beliebteste Plattform zur Container-Orchestrierung, die es ermöglicht, einen Cluster von Containern auf verschiedenen Nodes zu verwalten.
  • Docker Swarm: Eine in Docker integrierte Orchestrierungsplattform, die zum Erstellen und Verwalten von Docker-Clustern verwendet wird.
  • Orchestrierungsfunktionen: Automatische Skalierung, Selbstheilung, Netzwerkverwaltung und Lastenausgleich.

6.5 Netzwerke (Networks)

Netzwerke in Docker ermöglichen Containern, miteinander und mit der Außenwelt zu kommunizieren. Docker bietet mehrere Netzwerktypen für verschiedene Nutzungsszenarien an.

  • Bridge: Standard-Netzwerk, das von Docker erstellt wird. Container im Bridge-Netzwerk können miteinander interagieren.
  • Host: Der Container nutzt die Netzwerkschnittstellen des Host-Maschinen direkt und erhält direkten Zugriff darauf.
  • Overlay: Wird verwendet, um Netzwerke zwischen mehreren Docker-Daemons zu erstellen. Erforderlich für Orchestrierung.
  • None: Deaktiviert alle Netzwerkschnittstellen des Containers. Nützlich für isolierte Aufgaben.

6.6 Volumes

Volumes – das ist ein Mechanismus zur dauerhaften Speicherung von Container-Daten. Sie ermöglichen das Speichern von Daten außerhalb des Containers, sodass Informationen beim Neustart oder Löschen des Containers nicht verloren gehen.

  • Volume erstellen: Volumes werden mit dem Befehl docker volume create erstellt.
  • Volume einhängen: Volumes werden mithilfe des Flags -v beim Start an Container angeschlossen.
  • Vorteile: Volumes bieten eine bequeme Möglichkeit, Daten zwischen Containern zu speichern und auszutauschen, sowie eine bessere Performance im Vergleich zu bind mounts.

Wichtig! Ein Volume – das ist eine virtuelle Festplatte, die an eine virtuelle Maschine oder einen Container angeschlossen werden kann. Es wird normalerweise auf dem Host-Betriebssystem als gewöhnliche Datei gespeichert.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION