Monday, November 21, 2016

Container (Virtualisierung) - Wikipedia


Virtualisierung auf Betriebssystemebene auch bekannt als Containerisierung bezieht sich auf ein Betriebssystemmerkmal, bei dem der Kernel das Vorhandensein mehrerer isolierter Benutzerspeicherinstanzen zulässt. Solche Instanzen, -Container [1] Partitionen, virtuelle Umgebungen (VEs) oder Gefängnisse (FreeBSD-Gefängnis oder chroot-Gefängnis), können vom Standpunkt der in ihnen ausgeführten Programme wie echte Computer aussehen. Ein Computerprogramm, das auf einem normalen Betriebssystem ausgeführt wird, kann alle Ressourcen (verbundene Geräte, Dateien und Ordner, Netzwerkfreigaben, CPU-Leistung, quantifizierbare Hardwarefunktionen) dieses Computers anzeigen. Programme, die in einem Container ausgeführt werden, können jedoch nur die Inhalte und Geräte des Containers sehen, die dem Container zugewiesen sind.

Unter Unix-ähnlichen Betriebssystemen kann diese Funktion als fortgeschrittene Implementierung des Standard-Chroot-Mechanismus betrachtet werden, der den scheinbaren Stammordner für den aktuellen laufenden Prozess und dessen untergeordnete Elemente ändert. Neben Isolationsmechanismen bietet der Kernel häufig Ressourcenverwaltungsfunktionen, um die Auswirkungen der Aktivitäten eines Containers auf andere Container zu begrenzen.

Die Virtualisierung auf Systemebene wird häufig in Remote-Access-Anwendungen mit dynamischem Cloud-Zugriff implementiert, um ein gleichzeitiges bidirektionales Datenstreaming über geschlossene Netzwerke zu ermöglichen. [2]

Operation [ edit

] Unter normalen Betriebssystemen für Personalcomputer kann ein Computerprogramm alle Systemressourcen anzeigen (auch wenn dies möglicherweise nicht möglich ist). Sie beinhalten:

  1. Hardwarefunktionen, die verwendet werden können, wie z. B. die CPU und die Netzwerkverbindung.
  2. Daten, die gelesen oder geschrieben werden können, wie Dateien, Ordner und Netzwerkfreigaben.
  3. Angeschlossene Peripheriegeräte, mit denen sie interagieren können, z. B. eine Webcam Drucker, Scanner oder Faxgerät

Das Betriebssystem kann möglicherweise den Zugriff auf solche Ressourcen zulassen oder verweigern, je nachdem, welches Programm sie anfordert und welches Benutzerkonto in dessen Kontext ausgeführt wird. Das Betriebssystem kann diese Ressourcen auch ausblenden, so dass sie beim Auflisten durch das Computerprogramm nicht in den Aufzählungsergebnissen angezeigt werden. Aus Programmiersicht hat das Computerprogramm jedoch mit diesen Ressourcen interagiert, und das Betriebssystem hat einen Interaktionsvorgang verwaltet.

Mit der Betriebssystemvirtualisierung oder Containerisierung können Programme in Containern ausgeführt werden, denen nur Teile dieser Ressourcen zugeordnet sind. Ein Programm, das erwartet, dass der gesamte Computer in einem Container ausgeführt wird, kann nur die zugewiesenen Ressourcen sehen und glaubt, dass dies alles ist, was zur Verfügung steht. Auf jedem Betriebssystem können mehrere Container erstellt werden, denen jeweils eine Teilmenge der Ressourcen des Computers zugeordnet ist. Jeder Container kann eine beliebige Anzahl von Computerprogrammen enthalten. Diese Programme können gleichzeitig oder getrennt ausgeführt werden und sogar miteinander interagieren.

Die Containerisierung hat Ähnlichkeiten mit der Anwendungsvirtualisierung: Bei letzterer wird nur ein Computerprogramm in einen isolierten Container platziert, und die Isolation gilt nur für das Dateisystem.

Virtualisierung auf Betriebssystemebene wird häufig in virtuellen Hosting-Umgebungen eingesetzt, in denen sie endliche Hardwareressourcen sicher einer großen Anzahl von gegenseitig mißtrauischen Benutzern zuordnen können. Systemadministratoren können es auch verwenden, um Server-Hardware zu konsolidieren, indem Dienste auf separaten Hosts in Container auf einem Server verschoben werden.

Andere typische Szenarien umfassen das Trennen mehrerer Programme in getrennte Container, um die Sicherheit, Hardwareunabhängigkeit und zusätzliche Ressourcenverwaltungsfunktionen zu verbessern. Die durch die Verwendung eines Chroot-Mechanismus gebotene verbesserte Sicherheit ist jedoch bei weitem nicht weit entfernt. [3] Virtualisierungsimplementierungen auf Betriebssystemebene, die eine Live-Migration ermöglichen, können auch für den dynamischen Lastausgleich von Containern zwischen Knoten in einem Cluster verwendet werden.

Overhead [ edit ]

Die Virtualisierung auf Betriebssystemebene erfordert normalerweise weniger Overhead als die vollständige Virtualisierung, da Programme in virtuellen Partitionen die normale Systemaufrufschnittstelle des Betriebssystems verwenden und nicht müssen einer Emulation unterzogen oder in einer virtuellen Zwischenmaschine ausgeführt werden, wie dies bei vollständiger Virtualisierung (wie VMware ESXi, QEMU oder Hyper-V) und Paravirtualisierung (wie Xen oder UML) der Fall ist. Diese Form der Virtualisierung erfordert auch keine Hardwareunterstützung für eine effiziente Leistung.

Flexibilität [ edit ]

Die Virtualisierung auf Betriebssystemebene ist nicht so flexibel wie bei anderen Virtualisierungsansätzen, da sie kein Host-Betriebssystem oder ein anderes Host-Betriebssystem hosten können Gastkernel. Unter Linux sind beispielsweise unterschiedliche Distributionen in Ordnung, andere Betriebssysteme wie Windows können jedoch nicht gehostet werden.

Solaris überwindet die oben beschriebene Einschränkung teilweise mit der Branded-Zone-Funktion, mit der eine Umgebung in einem Container ausgeführt werden kann, der eine ältere Solaris-Version 8 oder 9 in einem Solaris 10-Host emuliert. Linux-Branded-Zonen (auch als "lx" -Zonen bezeichnet) sind auch auf x86-basierten Solaris-Systemen verfügbar und bieten einen vollständigen Linux-Benutzerraum und Unterstützung für die Ausführung von Linux-Anwendungen. Darüber hinaus stellt Solaris Hilfsprogramme für die Installation von Linux-Distributionen von Red Hat Enterprise Linux 3.x oder CentOS 3.x in "lx" -Zonen bereit. [4][5] Im Jahr 2010 wurden jedoch Linux-Branded-Zonen aus Solaris entfernt. 2014 wurden sie wieder in Illumos eingeführt, dem Open-Source-Solaris-Zweig, der 32-Bit-Linux-Kernel unterstützt. [6]

Storage [ edit

Einige Implementierungen bieten Kopier- On-Write (CoW) -Mechanismen. (Normalerweise wird ein Standard-Dateisystem von Partitionen gemeinsam genutzt, und diejenigen Partitionen, die die Dateien ändern, erstellen automatisch ihre eigenen Kopien.) Dies ist einfacher zu sichern, platzsparender und einfacher zwischenzuspeichern als das Kopieren auf Blockebene -write-Schemata, die bei Virtualisierungssystemen für Gesamtsysteme üblich sind. Virtualisierungssysteme für Gesamtsysteme können jedoch mit nicht-nativen Dateisystemen arbeiten und Momentaufnahmen des gesamten Systemstatus erstellen und zurücksetzen.

Implementierungen [ edit ]

Cloud-Computing und Container-Registrierungsdienste [ edit

:

Siehe auch [ edit ]

  1. ^ Root-Benutzer können leicht von Chroot entkommen. Chroot sollte nie als Sicherheitsmechanismus verwendet werden. [7]
  2. ^ a b b Unter Verwendung des CFQ-Schedulers gibt es eine separate Warteschlange pro Gast. 19659041] ^ a b b Vernetzung basiert auf Isolation, nicht auf Virtualisierung.
  3. ^ a 19659038] b In einem Container werden insgesamt 14 Benutzerfunktionen als sicher betrachtet. Der Rest kann Prozessen innerhalb dieses Containers nicht gewährt werden, ohne dass dieser Prozess möglicherweise die Dinge außerhalb dieses Containers beeinträchtigen könnte. [12]
  4. ^ Plattenkontingente pro Container sind möglich, wenn für jeden Container mit Hilfe von LVM separate Partitionen verwendet werden. oder wenn das zugrunde liegende Host-Dateisystem btrfs ist, in diesem Fall werden automatisch btrfs-Subvolumes verwendet.
  5. ^ Die Begrenzung der E / A-Rate wird bei Verwendung von Btrfs unterstützt.
  6. ^ Verfügbar seit Linux-Kernel 2.6.18 -028stable021. Die Implementierung basiert auf dem CFQ-Platten-E / A-Scheduler, es handelt sich jedoch um ein Schema mit zwei Ebenen, daher ist die E / A-Priorität nicht pro Prozess, sondern pro Container. [18]
  7. ^ a ] b Jeder Container kann seine eigenen IP-Adressen, Firewall-Regeln, Routingtabellen usw. haben. Es sind drei verschiedene Netzwerkschemata möglich: Routenbasiert, Bridge-basiert und Zuweisen eines realen Netzwerkgeräts (NIC) zu einem Container.
  8. ^ Docker-Container können in OpenVZ-Containern ausgeführt werden. [19]
  9. ^ Jeder Container kann über Rootzugriff verfügen, ohne andere Container zu beeinträchtigen. [20]
  10. ^ Verfügbar seit Version 4.0, Januar 2008.
  11. ^ Docker-Container können in Virtuozzo-Containern laufen. [22]
  12. ^ Ja with illumos [23]
  13. ^ Weitere Informationen finden Sie unter OpenSolaris Network Virtualization und Resource Control.
  14. ^ Nur wenn die oberste Ebene eine KVM-Zone (Illumos) oder eine kz-Zone (Oracle) ist.
  15. ^ Ab Solaris 11.3 Beta können Solaris-Kernel-Zonen Live-Migration verwenden.
  16. ^ Die kalte Migration (Herunterfahren, Neustart) wird implementiert.
  17. ^ Nicht-globale Zonen sind so eingeschränkt Sie dürfen andere Zonen nicht durch einen Fähigkeitsbeschränkungsansatz beeinflussen. Die globale Zone kann die nicht-globalen Zonen verwalten. [26]
  18. ^ Weitere Informationen finden Sie in der FreeBSD-Jail-Manpage mit der Option "allow.quotas" und dem Abschnitt "Jails and File Systems".
  19. Verfügbar seit TL 02. [33]

Referenzen [ edit ]

  1. ^ Hogg, Scott (2014-05-26). Msgstr "Software - Container: Wird häufiger verwendet als meist verwirklicht". Network World . Network World, Inc. . Abgerufen 2015-07-09 . Es gibt viele andere Virtualisierungssysteme auf Betriebssystemebene, wie Linux OpenVZ, Linux-VServer, FreeBSD-Jails, AIX-Workload-Partitionen (WPARs), HP-UX-Container (SRP), Solaris-Container usw.
  2. Portnoy, Matthew (2016). Virtualization Essentials . John Wiley & Sons. S. 212–320.
  3. ^ Korff, Yanek; Hoffnung, Paco; Bruce Potter (2005). Mastering von FreeBSD- und OpenBSD-Sicherheit . O'Reilly-Serie. O'Reilly Media, Inc. p. 59. ISBN 0596006268.
  4. ^ "System Administration Guide: Oracle Solaris-Container - Ressourcenverwaltung und Oracle Solaris-Zonen, Kapitel 16: Einführung in Solaris-Zonen". Oracle Corporation. 2010 . Abgerufen 2014-09-02 .
  5. ^ "System Administration Guide: Oracle Solaris-Container - Ressourcenverwaltung und Oracle Solaris Zones, Kapitel 31: Branded Zones und Linux Branded Zone ". Oracle Corporation. 2010 . 2014-09-02 .
  6. ^ Bryan Cantrill (2014-09-28). "Der Traum lebt! Linux-Container auf einem illumos-Kernel laufen lassen". slideshare.net . Abgerufen 2014-10-10 .
  7. ^ "3.5. Begrenzung der Umgebung Ihres Programms". freebsd.org .
  8. ^ "Docker legt LXC als Standard-Ausführungsumgebung ab". InfoQ .
  9. ^ "Docker kommt zu FreeBSD".
  10. ^ "Erste Schritte mit Docker für Windows". Docker .
  11. ^ "Erste Schritte mit Docker für Mac".
  12. ^ Linux-VServer-Papier, Sicherheitsfunktionen
  13. ^ a b Graber, Stéphane (1. Januar 2014). "LXC 1.0: Sicherheitsfunktionen [6/10]" . 12. Februar 2014 abgerufen. LXC unterstützt jetzt Benutzernamensräume. [...] LXC läuft nicht mehr als Root, selbst wenn ein Angreifer aus dem Container flieht, hat er die Privilegien eines regulären Benutzers auf dem Host
  14. ^ " " Sylabs bringt Singularity-Container in kommerzielle HPC " "ein.
  15. ^ " " SIF - Containing Your Container "
  16. ".
  17. ^ " " Singularität: Wissenschaftliche Container für die Mobilität von Rechnern .
  18. [19456572] Bronnikikov, Sergey . Msgstr "Vergleich auf der OpenVZ - Wiki - Seite". OpenVZ-Wiki . OpenVZ . 28. Dezember 2018 .
  19. ^ "I / O-Prioritäten für Container". OpenVZ Virtuozzo Containers Wiki .
  20. ^ "Docker im CT".
  21. ^ "Container". OpenVZ Virtuozzo Containers Wiki .
  22. ^ "Erste öffentliche Vorabveröffentlichung von Virtuozzo (damals als ASPcomplete bezeichnet)".
  23. "Parallels Virtuozzo Now Bietet native Unterstützung für Docker ".
  24. ^ Pijewski, Bill. "Unsere ZFS-E / A-Drosselklappe".
  25. ^ Häufig gestellte Fragen zur Netzwerkvirtualisierung und Ressourcenkontrolle (Armbrust) 2008-06-01 auf der Wayback-Maschine
  26. ^ Netzwerkressourcen in Oracle® Solaris 11.2 ".
  27. ^ Oracle Solaris 11.1 Administration, Oracle Solaris-Zonen, Oracle Solaris 10-Zonen und Ressourcenverwaltung E29024.pdf, S. 356–360. Verfügbar in einem Archiv.
  28. ^ "Enthalten Sie Ihre Begeisterung - Zweiter Teil: Gefängnisse, Zonen, OpenVZ und LXC". Gefängnisse wurden erstmals im Jahr 2000 in FreeBSD 4.0 eingeführt.
  29. ^ "Hierarchical_Resource_Limits - FreeBSD-Wiki". Wiki.freebsd.org. 2012-10-27 . Abgerufen 2014-01-15 .
  30. ^ "Implementierung eines klonbaren Netzwerkstapels im FreeBSD-Kernel" (PDF) . usenix.org. 2003-06-13.
  31. ^ "VPS for FreeBSD" . Abgerufen 2016-02-20 .
  32. ^ "[Announcement] VPS // OS-Virtualisierung // Alpha-Release" . 2016-02-20 .
  33. ^ "3.5. Begrenzung der Umgebung Ihres Programms". Freebsd.org . Abgerufen 2014-01-15 .
  34. ^ "Informationen zu IBM Fixpacks für: WPAR Network Isolation - United States". ibm.com .
  35. ^ Live Application Mobility in AIX 6.1
  36. ^ a b c d https://www.freedesktop.org/software/systemd/man/systemd-nspawn.html#--property= [19659170] ^ a b

No comments:

Post a Comment