Docker
Docker - Isolierung von Anwendungen durch Container-Virtualisierung
Beschreibung

Schlanke Frorm der Virtualisierungen
- Prozesse laufen auf dem Kernel des Host-Betriebssystems
- Abschottung durch
Motivation
- Vereinfachte Bereitstellung von Anwendungen
- Container, die alle nötigen Pakete enthalten
- leicht als Dateien transportieren und installieren lassen
- Container gewährleisten
Trennung und Verwaltung der auf einem Rechner genutzten Ressourcen
- Code
- Laufzeitmodul
- Systemwerkzeuge
- Systembibliotheken
- alles was auf einem Rechner installiert werden kann
Container
- Identische Arbeitsumgebung
- An unterschiedlichen Stellen
Bereitstellung
Images oder Dockerfiles
- Fertige Images
- Dockerfiles
- Anweisungen zum Erzeugen eines Images (Dockerfiles ) im Projekt verteilen
- Dockerfiles können gut in Projekt-Repositoies bereitgestellt werden
Fertige Images
DockerHub bietet fertige Images
- Ein solches gestartetes Image nennt sich dann Container und enthält beispielsweise Dateien, die in den Container gemountet oder kopiert werden
- Man kann auch eigene Images bauen, indem man eine entsprechende Konfiguration (Dockerfile) schreibt
- Jeder Befehl bei der Erstellung eines Images erzeugt einen neuen Layer, die sich dadurch mehrere Images teilen können
In der Konfiguration einer Gitlab-CI-Pipeline kann man mit image ein Docker-Image angeben, welches dann in der Pipeline genutzt wird
Betriebssysteme
- Virtualisierung mit Linux
Docker auf die Virtualisierung mit Linux ausgerichtet
- Docker-Technologie benötigt einen Linux-Kernel
Container und Virtuelle Maschinen
Realisierung von Containern
Sicherheit
- Kein Sicherheitsgewinn
- Durch Container hat man allerdings im Gegensatz zu herkömmlichen VMs keinen Sicherheitsgewinn
- da die im Container laufende Software ja direkt auf dem Host-Betriebssystem ausgeführt wird
Sicherheitsaspekte
- Root-Rechte
Docker-Container werden durch einen Daemon erzeugt, der in der Vergangenheit zwingend root-Rechte haben musste, ab Version 19.03 unter bestimmten Umständen aber auch unprivilegiert sein kann
- Läuft der Daemon mit root-Rechten, bedient man sich oft einer eigenen Nutzergruppe, um auch unprivilegierten Nutzern die Erzeugung neuer Docker-Container zu erlauben
- Unprivilegierten Nutzer
Ein möglicher Fallstrick besteht darin, dass alle unprivilegierten Nutzer, die Mitglied einer solchen Nutzergruppe sind, indirekt über volle root-Rechte auf dem Host-System verfügen
- Die alternative Software für Containervirtualisierung Podman verzichtet auf dieses Sicherheitsrisiko, ist zu Docker kompatibel und angepasst auf Kubernetes
- Format
Die Open Container Initiative spezifiziert ein Format zur Containervirtualisierung
- Da es sich um eine internationale und offene Spezifikation handelt, kann prinzipiell jeder diese implementieren
- So sind sicherere Alternativen zu Docker entstanden, zu denen man vorhandene Images oder Container migrieren kann – etwa containerd oder Podman
- Trotz Standardisierung gibt es kleinere Unterschiede, etwa im Speicherort von Container und Images
- Unterschiede zu Virtuellen Maschinen
Im Unterschied zu einer Virtuellen Maschine teilen sich Container und Host einen gemeinsamen Betriebssystem-Kernel
- Dies verbessert einerseits die Leistung erheblich, vergrößert andererseits aber auch das Risiko, dass erfolgreiche Angriffe gegen den Kernel auch den Host kompromittieren
Bei richtiger Konfiguration sind selbst root-Rechte innerhalb eines Docker-Containers nicht dazu geeignet, um den Host anzugreifen
- Insbesondere sollte dazu ein neuer User Namespace erzeugt und der root-Benutzer des Containers auf einen unprivilegierten Benutzer des Hosts abgebildet werden
Ressourcentrennung
Da die Ressourcentrennung alleine mit den Docker zugrunde liegenden Techniken wie Namespaces und Cgroups nicht völlig sicher ist
- hat das Unternehmen Red Hat Unterstützung für die sicherheitsrelevante Kernel-Erweiterung SELinux implementiert
- welche die Container auf der Ebene des Host-Systems zusätzlich absichert
Anhang
Siehe auch
Links
Weblinks
- https://docs.docker.com
- https://hub.docker.com/search
- https://de.wikipedia.org/wiki/Docker_(Software)
- https://www.hsbi.de/elearning/data/FH-Bielefeld/lm_data/lm_1359639/building/docker.html
- Offizielle Website
- Renaissance der Container-Virtualisierung mit Docker
- Einführung und Praxisbeispiele / Übersicht Docker und Container-Virtualisierung