Docker 2024 04: Unterschied zwischen den Versionen
Drlue (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Drlue (Diskussion | Beiträge) |
||
| Zeile 23: | Zeile 23: | ||
<ref>https://www.redhat.com/de/topics/virtualization/what-is-a-hypervisor</ref> | <ref>https://www.redhat.com/de/topics/virtualization/what-is-a-hypervisor</ref> | ||
[[Datei:Virtual-Machines.png|mini|https://bi-insider.com/posts/virtual-machines-vs-containers/]] | [[Datei:Virtual-Machines.png|300px|mini|none|https://bi-insider.com/posts/virtual-machines-vs-containers/]] | ||
=== Containerisierung === | === Containerisierung === | ||
Version vom 5. April 2024, 13:32 Uhr
Schulung Docker 2024/04
In der folgenden Schulung soll ein grundlegendes Verständnis für die Containerisierung erworben werden.
Teilnehmer_innen sollen nach der Schulung in der Lage sein
- eigene Docker Images zu erstellen und diese mittels Docker Compose zu starten
- die bereitgestellten Ressourcen für Arbeitsspeicher und CPU Zeit zu modifizieren
- die Einsatzzwecke der verschiedenen Networking Modelle (insbesondere Bridged vs. Host Network) zu unterscheiden und diese gezielt anwenden können
- eine eigene Image Registry zu erstellen und dort Images ablegen und abrufen
Welche Bereiche werden explizit ausgeklammert:
- Limitierung von Netzwerkresourcen (siehe tc, Linux als Hostsystem erforderlich)
- Limitierung von Disk IO (siehe constraints, Linux als Hostsystem erforderlich)
- Limitierung von Speicherplatz (siehe XFS, Linux als Hostsystem erforderlich)
Virtualisierung vs Containerisierung
Beide Varianten bieten die Möglichkeit Applikationen isoliert von anderen Prozessen auszuführen. Im Gegensatz zur Containerisierung wird bei der Virtualisierung ein komplettes Betriebssystem mit entsprechenden Anwendungen gestartet.
Virtualisierung
Bei der Virtualisierung übernimmt der Hypervisor das erstellen, starten und das Zuteilen der Hardwareressource des Hosts, an die virtualisierten Gast Betriebssysteme. Hypervisoren können in verschiedene Typen eingeteilt werden:
- Typ 1, Läuft direkt auf der Hardware (z.B.: KVM, Microsoft Hyper-V und VMware vSphere)
- Typ 2, Läuft auf einem Host Betriebssystem (z.B.: VMware Workstation und Oracle VirtualBox)

Containerisierung
Unter Containerisierung versteht man das Zusammenfassen von Softwarecode mit den für die Ausführung des Codes erforderlichen Betriebssystembibliotheken und Abhängigkeiten zu einer einzigen ausführbaren Datei, die als Container bezeichnet wird und in jeder Infrastruktur konsistent ausgeführt werden kann. Container sind portabler und ressourceneffizienter als virtuelle Maschinen (VMs) und haben sich de facto zu den Recheneinheiten moderner cloudnativer Anwendungen entwickelt.[2]
Container Lösungen bieten im Vergleich zur Virtualisierung eine leichtgewichtigere Möglichkeit Applikationen isoliert zu starten. Folgende Informationen beziehen sich auf Docker, sind aber möglicherweise auch auf andere Container Lösungen (wie z.B.: LXC) übertragbar.
Im Gegensatz zur Virtualisierung wird bei der Containerisierung nur die zu startende Anwendung und ihre Abhängigkeiten gestartet. Es wird kein komplettes Betriebssystem initialisiert. Der Container teilt sich den Kernel mit dem Hostbetriebssystem. Die Isolierung zu den Hostanwendungen erfolgt durch verschiedene andere Mechanismen die im weiteren Verlauf erklärt werden.

Images & Container
Parametrisierung: Umgebungsvariablen
Storage: Mounts und Volumes
Networking Überblick: Bridge vs Host Network
Networking Konfiguration: Portforwarding
Ressourcen Limitierung:
CPU
Network
IO
Mit Container verbinden
Dateien von/zu Host Kopieren
Interaktives Terminal verbinden
?Kommandos von Host in Container ausführen?
Docker-Compose
Würde ich generell docker run vorziehen, da übersichtlicher
Gemeinsames Fallbeispiel
Dockerfile
Eigenes Dockerfile auf Grundlage eines bestehenden Base Images erstellen
Dockerfile für eigene Anwendung erstellen
docker-compose für Service Verbund erstellen (z.b.: App + Datenbank)
?Registry?