Abo
  • IT-Karriere:

Railcar: Oracle veröffentlicht Container-Runtime und Debugger in Rust

Mit Railcar veröffentlicht Oracle auf Github eine Rust-Implementierung des OCI-Runtime-Spec. Crashcart ist ein Microcontainer Debugging Tool. Orcale bietet damit Alternativen zu den Diensten von Docker oder CoreOS.

Artikel veröffentlicht am , Kristian Kißling/Linux Magazin
Oracle baut sich eigene Container-Werkzeuge.
Oracle baut sich eigene Container-Werkzeuge. (Bild: Roy Luck, flickr.com/CC-BY 2.0)

Das neue Open-Source-Projekt Railcar von Oracle ähnelt der Referenzimplementierung der Container-Runtime von Runc, ist aber komplett in Rust geschrieben. Das soll für Speichersicherheit sorgen und ermöglicht es den Programmierern, sich nicht erst mit Garbage Collection und Multithreading beschäftigen zu müssen.

Stellenmarkt
  1. windream, Bochum
  2. nexnet GmbH, Berlin

Oracle hat sich für diese Software entschieden, weil Go Probleme im Umgang mit Linux Namespaces hat und C nicht sicher genug ist. Rust bewegt sich zwischen beiden, erlaubt eine weitgehende Kontrolle über das Threading und kommt so auch mit Namespaces zurecht.

Das ebenfalls von Oracle vorgestellte Crashcart ermöglicht es hingegen, ein Image mit Linux-Binärdateien in einen Container zu laden. Ein Builder, der als privilegierter Container läuft, erzeugt aus einem Dockerfile ein crashcart_builder-Image. Den privilegierten Container braucht es, weil Crashcart das Image per Loopback-Mount auf Ext 3 erzeugt und dann Dateien hineinkopiert. Beim Erststart braucht das Image einige Zeit, weil im Hintergrund der Nix-Paketmanager die Binaries aus dem Quellcode erzeugt. Anschließend kann der User seine Binaries in einem Container seiner Wahl verwenden, zum Beispiel für Analysezwecke.

Oracle beschreibt auch die Herausforderungen beim Implementieren von Railcar. Probleme bereite es demnach unter anderem, ein Backend zur Zusammenarbeit mit Docker zu überreden, weil so viele verschiedene Prozesse involviert seien, was Debugging erschwere. Die Spezifikation sei zudem nicht vollständig, denn Containerd und Runc unterstützen bestimmte wichtige Aufrufe, die nicht in der Spezifikation stehen. Auch an anderen Stellen folgt das Duo nicht exakt der Spezifikation. So sollte ein zweifaches Löschen von Containern eine Fehlermeldung ausgeben, was nicht der Fall ist. Auch die Implementierung der Pre- und Poststart-Hooks sei nicht ganz einfach gewesen, wohl auch, weil die Spezifikation noch recht jung sei.

Nicht zuletzt gibt es Abweichungen von Runc: So erzeugt Railcar stets einen Initprozess, um Merkwürdigkeiten im Umgang mit Namespaces und PIDs zu umgehen. Mögliche ungewisse Auswirkungen könnte diese Entscheidung auf Stdout und Stderr haben, wenn man Railcar ohne Terminal betreibt, schreiben die Entwickler in einem begleitenden Blogpost. Dieses Problem wolle man als nächstes angehen, auch um Railcar kompatibler zu Runc zu machen. Ansonsten fehlt Railcar noch das stats-Kommando, automatische Tests gegen neuere Spec-Versionen stehen auch auf dem Fahrplan.

Insgesamt sei man aber sehr zufrieden mit der Wahl von Rust für das Projekt. Anders als Go habe man für die Rust-Implementierung keine C-Code-Injektion benötigt und man sei sehr zuversichtlich, was die Speichersicherheit von Railcar angehe. Die Startzeit für Container sei gut, hier bremse aber tatsächlich der Kernel: Das Anlegen von Cgroups und Network Namespaces sei das größte Hinderniss in dem Konstrukt. Sowohl Railcar als auch Crashcart stehen jeweils unter zwei Lizenzen, der Universal Permissive License (UPL) 1.0 und der Apache-Lizenz 2.0 und lassen sich auf Github herunterladen.



Anzeige
Top-Angebote
  1. (u. a. 49-Zoll-TV für 399,99€, High-Resolution-Kopfhörer für 159,99€, Alpha 5100...
  2. (u. a. Bluetooth-Lautsprecher für 29,99€, Over Ear Kopfhörer für 37,99€, Wireless Earbuds...
  3. (u. a. D24f FHD/144 Hz für 149€ + Versand statt 193,94€ im Vergleich)
  4. (u. a. Acer KG241QP FHD/144 Hz für 169€ und Samsung GQ55Q70 QLED-TV für 999€)

Biterolf 06. Jul 2017

Und ich dachte, ich bin der einzige der so bekloppt denkt. Mehr Rust ist dann aber doch...


Folgen Sie uns
       


Ikea-Symfonisk-Lautsprecher im Test

Wir haben Ikeas erste beiden Symfonisk-Lautsprecher getestet. Sie sind vollständig Sonos-kompatibel und können mit anderen Sonos-Lautsprechern verbunden werden. Klanglich liefern sie gute Ergebnisse und das zu einem niedrigeren Preis als die Modelle von Sonos direkt.

Ikea-Symfonisk-Lautsprecher im Test Video aufrufen
Noise Cancelling Headphones 700 im Test: Boses bester ANC-Kopfhörer sticht Sony vielfach aus
Noise Cancelling Headphones 700 im Test
Boses bester ANC-Kopfhörer sticht Sony vielfach aus

Bose schafft mit seinen neuen Noise Cancelling Headphones 700 eine fast so gute Geräuschreduzierung wie Sony und ist in manchen Punkten sogar besser. Die Kopfhörer haben uns beim Testen aber auch mal genervt.
Ein Test von Ingo Pakalski

  1. Bose Frames im Test Sonnenbrille mit Musik
  2. Noise Cancelling Headphones 700 ANC-Kopfhörer von Bose versprechen tollen Klang
  3. Frames Boses Audio-Sonnenbrille kommt für 230 Euro nach Deutschland

Nachhaltigkeit: Bauen fürs Klima
Nachhaltigkeit
Bauen fürs Klima

In Städten sind Gebäude für gut die Hälfte der Emissionen von Treibhausgasen verantwortlich, in Metropolen wie London, Los Angeles oder Paris sogar für 70 Prozent. Klimafreundliche Bauten spielen daher eine wichtige Rolle, um die Klimaziele in einer zunehmend urbanisierten Welt zu erreichen.
Ein Bericht von Jan Oliver Löfken

  1. Klimaschutz Großbritannien probt für den Kohleausstieg
  2. Energie Warum Japan auf Wasserstoff setzt

Arbeit: Hilfe für frustrierte ITler
Arbeit
Hilfe für frustrierte ITler

Viele ITler sind frustriert, weil ihre Führungskraft nichts vom Fach versteht und sie mit Ideen gegen Wände laufen. Doch nicht immer ist an der Situation nur die Führungskraft schuld. Denn oft verkaufen die ITler ihre Ideen einfach nicht gut genug.
Von Robert Meyer

  1. IT-Fachkräftemangel Freie sind gefragt
  2. Sysadmin "Man kommt erst ins Spiel, wenn es brennt"
  3. Verdeckte Leiharbeit Wenn die Firma IT-Spezialisten als Fremdpersonal einsetzt

    •  /