Gibt es bemerkenswerte Unterschiede zwischen LXC (Linux-Container) und FreeBSD-Jails in Bezug auf Sicherheit, Stabilität und Leistung?
Auf den ersten Blick sehen beide Ansätze sehr ähnlich aus.
Gibt es bemerkenswerte Unterschiede zwischen LXC (Linux-Container) und FreeBSD-Jails in Bezug auf Sicherheit, Stabilität und Leistung?
Auf den ersten Blick sehen beide Ansätze sehr ähnlich aus.
Antworten:
Unabhängig von dem hier verwendeten ausgefallenen Namen sind beide Lösungen für ein bestimmtes Problem: Eine bessere Lösung für die Trennung als die klassische Unix- Chroot . Virtualisierung auf Betriebssystemebene, Container, Zonen oder sogar "chroot with steroids" sind Namen oder kommerzielle Titel, die dasselbe Konzept der Benutzerbereichstrennung definieren, jedoch unterschiedliche Funktionen aufweisen.
Chroot wurde am 18. März 1982, Monate vor der Veröffentlichung von 4.2 BSD , als Tool zum Testen seines Installations- und Build-Systems eingeführt, weist aber auch heute noch Mängel auf. Da das erste Ziel von chroot darin bestand, nur einen Newroot- Pfad bereitzustellen , wurden andere Aspekte des Systems, die isoliert oder gesteuert werden mussten, aufgedeckt (Netzwerk, Prozessansicht, E / A-Durchsatz). Hier erschienen die ersten Container (Virtualisierung auf Benutzerebene).
Beide Technologien (FreeBSD Jails und LXC) nutzen die Userspace-Isolation, um eine weitere Sicherheitsebene bereitzustellen. Durch diese Unterteilung wird sichergestellt, dass ein bestimmter Prozess nur mit anderen Prozessen im selben Container auf demselben Host kommuniziert. Wenn eine Netzwerkressource für die Kommunikation "außerhalb der Welt" verwendet wird, werden alle an die diesem Container zugewiesene Schnittstelle / den zugewiesenen Kanal weitergeleitet hat.
Eigenschaften
FreeBSD-Jails:
allow.mount.zfs
, um mehr Leistung zu erzielen, und andere Variablenchildren.max
definieren beispielsweise die maximale Anzahl an Kindergefängnissen.vnet
, wodurch jedem Gefängnis ein eigener Netzwerkstapel, Schnittstellen, Adressierungs- und Routingtabellen zugewiesen werden können;nullfs
um das Verknüpfen von Ordnern mit Ordnern zu unterstützen, die sich auf dem realen Server in einem Gefängnis befinden;sysctl
).security.jail.allow.*
Parameter begrenzen die Aktionen des Root-Benutzers dieses Gefängnisses.Linux-Container (LXC):
Live-Migrationsfunktionalität wird entwickelt. Es ist wirklich schwer zu sagen, wann es für den produktiven Einsatz bereit sein wird, da Docker / LXC sich mit Prozesspause, Snapshot, Migration und Konsolidierung des Userspace befassen muss - ref1 , ref2 .Die Livemigration funktioniert mit Basiscontainern (kein Gerät durchläuft weder komplexe Netzwerkdienste noch spezielle Speicherkonfigurationen).Docker verwendet lxc nicht mehr. Sie haben jetzt eine spezifische Bibliothek namens libcontainer , die die Integration mit Kernel-Namespace- und cgroups-Funktionen auf niedriger Ebene direkt verwaltet.
Keine der beiden Technologien ist ein Allheilmittel für die Sicherheit, aber beide bieten eine gute Möglichkeit, eine Umgebung zu isolieren, die aufgrund der gemischten Betriebssysteminfrastruktur keine vollständige Virtualisierung erfordert. Die Sicherheit wird nach dem Lesen der Dokumentation und der Implementierung von Kernel-Tunables, MACs und Isolationen, die Ihnen diese virtuellen Betriebssysteme bieten, erreicht.
Siehe auch:
quelle
root
(und sich somit am systemweiten Speicherort für Container befanden).