www.wikidata.de-de.nina.az
Containervirtualisierung oder Containering ist eine Methode um mehrere Instanzen eines Betriebssystems als Gaste isoliert voneinander den Kernel eines Hostsystems nutzen zu lassen Im Gegensatz zur Virtualisierung mittels eines Hypervisors hat Containervirtualisierung zwar einige Einschrankungen in der Art ihrer Gaste gilt aber als besonders ressourcenschonend Popular in der IT wurde die Software Docker im Jahr 2013 unter anderem durch eine intensive Zusammenarbeit mit Red Hat und die Integration in deren Produkt OpenShift 1 Es hatte allerdings auch davor schon vergleichbare Projekte gegeben Inhaltsverzeichnis 1 Prinzip 2 Geschichte 3 Realisierungen 4 Hostbetriebssysteme 5 Kritik 6 EinzelnachweisePrinzip BearbeitenAuf einem gewohnlichen Betriebssystem kann jedes Programm normalerweise alle Systemressourcen einsehen und verwenden Unter anderem Nutzbare Hardware komponenten wie CPU und Netzwerk Speicher Lesen Schreiben Ordnerstrukturen und Netzwerkspeicher Peripheriegerate wie Tastatur Webcam Scanner und Drucker Das Betriebssystem kann den Zugriff auf solche Ressourcen einschranken in Abhangigkeit davon unter welchem Benutzer und Kontext der Prozess lauft Durch Containering lasst sich verwalten welche Systemressourcen den Prozessen in dem Container zugewiesen werden 2 Geschichte Bearbeiten1979 fuhrten die Entwickler von Unix den Systemaufruf chroot ein mit dem sich ein Teilbereich des Dateisystems vom Rest isolieren liess und damit einen ersten Schritt zur Virtualisierung des Betriebssystems ging 3 Viele Jahre wurde der Ansatz nur sporadisch zu Zwecken von Softwaretests und dem Schutz von Servern genutzt besonders unter den Derivaten von BSD Unix die es unter dem Namen Jails weiterentwickelten 4 Auch wenn es in den spaten 1990er Jahren mit User Mode Linux Aktivitaten bei Linux Entwicklern gab um das Betriebssystem im Betriebssystem zu starten fand dieser Ansatz nur in Fachkreisen hohere Beachtung 5 Verbreitet war mit dem Open Source Projekt OpenVZ und dem darauf basierenden Produkt Virtuozzo Mitte der 2000er Jahre Software die es Webhostern gestattete viele Linux Websites auf einem einzigen Server zu betreiben Die Betriebssysteme Solaris und BSD hatten jeweils eigene Realisierungen des Prinzips Die Entwickler des Linux Kernels hatten unter dem Eindruck dieser Entwicklungen Vorsorge getroffen ahnliche Funktionen in ihr Betriebssystem einzubauen Dazu zahlen unter anderem die Namespaces Cgroups und Capabilities Unter dem Begriff LXC kommen viele dieser Techniken zum Einsatz bedurfen aber noch viel Detailwissen im Aufbau von Betriebssystemen und Betriebssystemdistributionen Das anderte sich als 2013 das damals dotCloud genannte Unternehmen Docker vorstellte das es Anwendungsentwicklern vereinfachte ihre Software in Containern zu verpacken In der Folge sind besonders fur Linux eine Reihe von Alternativen zu Docker entstanden darunter rkt ausgesprochen Rocket und das Teilprojekt Nspawn von systemd Einige Projekte und Anbieter paketieren Containervirtualisierung auch in Produkten die weitere Verwaltungssoftware enthalt etwa zur Orchestrierung oder um Platform as a Service anzubieten Beispiele dafur sind die Projekte Kubernetes oder OpenShift Realisierungen BearbeitenViele Projekte und Produkte implementieren das Prinzip der Containervirtualisierung unterscheiden sich jedoch im Umfang welche Systemressourcen zum Beispiel Prozesse Dateisystem Netzwerkschnittstellen sie virtualisieren und voneinander isolieren Einige Realisierungen umfassen chroot isoliert einen Teil des Dateisystems vom umliegenden Rest sodass es fur einen Prozess so aussieht als ob der als Argument ubergebene Pfad das Wurzelverzeichnis des Dateisystems ware Das Verfahren lasst sich jedoch leicht aushebeln weshalb es nicht als echte Isolierung taugt Drawbridge UML User Mode Linux lasst einen Linux Kernel als Userland Prozess ablaufen BSD Jails entwickelt die Idee von Chroot fur die BSD Derivate von Unix weiter Solaris Zones war die Weiterentwicklung von Sun Microsystems fur sein Unix Derivat Solaris OpenVZ ist eine erhebliche Erganzung des Linux Kernels um Funktionen die heutzutage in etwa dem Funktionsumfang von LXC entsprechen Die Linux Kernelentwickler haben jedoch einen Grossteil der Funktionen neu geschrieben und verallgemeinert Namespaces 6 Cgroups Die proprietare Variante von OpenVZ wird als Virtuozzo von Parallels Inc vertrieben LXD ist ein Produkt von Canonical das auf LXC aufsetzt aber viele weitere Funktionen die teilweise aus der Hypervisorvirtualisierung stammen hinzufugt Docker ist eine Containervirtualisierungsplattform die viele der vorstehenden Techniken einsetzt und um benutzerfreundliche Werkzeuge und Dienste erganzt Dazu gehort beispielsweise eine Beschreibung von Images Dockerfiles oder ein Repository das solche Images verwaltet Der gleichnamige Hersteller bietet fur die Plattform viele weitere Erganzungen an einige davon kostenlos andere kostenpflichtig systemd nspawn ist ein Teilprojekt des systemd Frameworks und war ursprunglich dazu gedacht systemd selbst zu testen ohne jedes Mal den Rechner neu zu starten Es nutzt die Linux spezifischen Namespaces und Cgroups rkt ist eine alternative Implementierung des Docker Ansatzes vom Wettbewerber CoreOS der an einzelnen Designentscheidungen von Docker Kritik hervorgebracht hatte die primar die Sicherheit betrifft runC ist der Versuch das drohende Schisma zwischen Docker und rkt zu schlichten Dazu haben mehrere Hersteller unter dem Dach der Linux Foundation die Open Container Initiative gegrundet runC ist nur eine Runtime Umgebung und enthalt viele Funktionen anderer Containervirtualisierungsplattformen nicht Podman ist ein Container Manager der ohne einen Daemon ausgefuhrt werden kann und auf dem Konzept von Kubernetes Pods aufbaut 7 Podman ist eine Weiterentwicklung von Skopeo von Redhat 8 Hostbetriebssysteme BearbeitenDie meisten Realisierungen von Containervirtualisierungen stammen aus dem Umfeld der Betriebssystemfamilie Unix Popular wurde sie besonders im Kontext von Linux ab 2013 durch Docker Dafur gibt es auch Realisierungen fur die Hostbetriebssysteme Windows und MacOS die jedoch letztlich zusatzlich zur Containervirtualisierung einen leichtgewichtigen Hypervisor verwenden um wieder einen Linux Kernel zu starten und diesen dann mit Docker zu nutzen Es gibt auch native Containervirtualisierung fur andere Betriebssysteme als Linux die jedoch noch keine grosse Verbreitung gefunden haben Kritik BearbeitenDa alle Gaste der Containervirtualisierung den gleichen Kernel nutzen muss dieser starke Mechanismen mitbringen um die Isolation der einzelnen Gaste zu realisieren Das ist bei einer komplexen Software wie etwa einem Linux Kernel mit mehreren hundert Systemaufrufen und diversen anderen Wegen der Kommunikation mit dem Kernel nicht ganz einfach 9 Durch die Isolation der Dateisysteme nutzt jeder Container seine eigene Fassung von Systembibliotheken Werden in ihnen Schwachstellen bekannt wie beispielsweise die als Heartbleed bezeichnete Schwachstelle der SSL TLS Bibliotheken OpenSSL so muss ein Systemverwalter alle ihre Instanzen auf einem Computer aktualisieren anstatt nur einmal pro Server Durch die Vielfalt an Einstellungs und Konfigurationsmoglichkeiten lassen sich Container leicht so einstellen dass sie ungewollte Zugriffsmoglichkeiten eroffnen So erlauben privilegierte Container zwar mehr Funktionen innerhalb des Containers auszufuhren aber schwachen die Isolation der Container vom Host 10 Als Dienstleistung fur Container sind Repositories entstanden die bereits fertig zusammengestellte Images anbieten die direkt auf der Containerplattform lauffahig sind Einige dieser Artefakte sind von zweifelhafter Qualitat und konnen durch Unwissenheit oder bosen Willen der Anbieter Schwachstellen enthalten wenn sie nicht vor dem Download und Betrieb gepruft wurden 11 Einzelnachweise Bearbeiten Red Hat and dotCloud Collaborate on Docker to Bring Next Generation Linux Container Enhancements to OpenShift Platform as a Service Abgerufen am 29 August 2022 englisch What is a Container Docker 11 November 2021 abgerufen am 29 August 2022 amerikanisches Englisch Der Zeitstempel der Datei usr sys sys sys4 c der PDP 11 Fassung von Unix V7 von Henry Spencer v7 datiert auf den 7 Mai 1979 Abgerufen aus https unixarchive cn k de PDP 11 Distributions research Henry Spencer v7 v7 tar gz Christoph Herrmann Eingesperrt BSD Jails als Werkzeug zur Systemabsicherung iX 3 2002 Jeff Dike User mode linux In 5th Annual Linux Showcase Conference Oakland CA 2001 Michael Kerrisk Namespaces in operation Linux Weekly News LWN Abruf unter https lwn net Articles 531114 https jaxenter de docker podman container daemonless rootless 89349 Docker vs Podman https www netways de blog 2019 05 31 podman ist dem docker sein tod https access redhat com user 11290053 Container Security Isolation Heaven or Dependency Hell Abgerufen am 29 August 2022 englisch Understanding root inside and outside a container Abgerufen am 29 August 2022 englisch What is container security Abgerufen am 29 August 2022 englisch Abgerufen von https de wikipedia org w index php title Containervirtualisierung amp oldid 237897753