Linux-Container in 500 Zeilen Code
Zusammenfassung
Liz Rice baut einen kleinen Container in Go und macht Namespaces, Cgroups, Root-Dateisystem und Prozessstart direkt im Code sichtbar.
Ideen
- clone startet einen Prozess in neuen Linux-Namespaces.
- UTS- und PID-Namespaces trennen Hostnamen und Prozessnummern.
- Ein eigenes Root-Dateisystem begrenzt die sichtbare Dateihierarchie.
- Cgroups beschränken Ressourcen außerhalb des isolierten Prozessbaums.
Einsichten
- Container entstehen aus mehreren Kernelmechanismen, nicht aus einer einzelnen Containerfunktion.
- Isolation und Ressourcenbegrenzung lösen unterschiedliche Probleme.
- Kurzer Lehrcode zeigt Vertrauensgrenzen deutlicher als umfangreiche Produktionswerkzeuge.
Fakten
- Das Beispiel umfasst ungefähr 500 Zeilen Go.
- Es verwendet Linux-spezifische Systemaufrufe.
- Ein Container teilt den Kernel mit seinem Host.
Empfehlungen
- Führe den Lehrcontainer nur auf einem entbehrlichen Testsystem aus.
- Prüfe Namespaces, Capabilities und Cgroups als getrennte Schutzschichten.
Referenzen
Der Link zur Originalquelle öffnet einen neuen Tab.