Zum Inhalt springen

Docker: Unterschied zwischen den Versionen

Aus Foxwiki
Zeile 55: Zeile 55:


== Sicherheit ==
== Sicherheit ==
; Kein Sicherheitsgewinn
* [[Docker/Sicherheit]]
* 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-Konto|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 [[Hostrechner|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 [[Implementierung#Softwaretechnik|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 [[Virtuelle Maschine|Virtuellen Maschinen]]
Im Unterschied zu einer [[Virtuelle Maschine|Virtuellen Maschine]] teilen sich Container und Host einen gemeinsamen [[Kernel (Betriebssystem)|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
 
 
<noinclude>


== Anhang ==
== Anhang ==

Version vom 23. August 2025, 08:56 Uhr

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

Container und Virtuelle Maschinen

Realisierung von Containern

Sicherheit

Anhang

Siehe auch


Links

Weblinks

  1. https://docs.docker.com
  2. https://hub.docker.com/search
  3. https://de.wikipedia.org/wiki/Docker_(Software)
  4. https://www.hsbi.de/elearning/data/FH-Bielefeld/lm_data/lm_1359639/building/docker.html
  5. Offizielle Website
  6. Renaissance der Container-Virtualisierung mit Docker
  7. Einführung und Praxisbeispiele / Übersicht Docker und Container-Virtualisierung