FreeBSD Jails oder Docker-Instanzen

18

Was sind die Hauptunterschiede zwischen Jails unter FreeBSD und Docker unter Linux? Ist einer wesentlich sicherer oder performanter als der andere? Jails sind viel älter als Docker-Instanzen, sodass der Code selbst als sicherer angesehen werden kann. Aber Jails haben sich nie "durchgesetzt", vielleicht sind sie nicht so gut wie Docker-Instanzen? Oder liegt das nur daran, dass Linux so viel beliebter ist als FreeBSD?

Simba
quelle

Antworten:

24

Ich werde einige Aspekte von FreeBSD-Jails und Linux Docker ansprechen, wie sie sich ähneln und wie sie sich unterscheiden.

  • Beide dienen demselben Ziel: Es handelt sich um eine Implementierung einer einfachen Virtualisierung, wenn Sie die Anwendung in einem getrennten und isolierten Bereich unter demselben Kernel ausführen. Hier enden die Ähnlichkeiten, und Unterschiede beginnen
  • Docker ist ein Tool, das hauptsächlich zum Ausführen vorbereiteter Binärimages verwendet wird, die aus verschiedenen öffentlichen oder privaten Repositorys abgerufen werden können. Die meisten Leute benutzen es auf diese Weise. Weniger Leute bauen ihre eigenen auf und laden sie dann in diese Repositories hoch.
  • FreeBSD-Jails ähneln in Linux eher LXC: Es ist eine Methode, Ihren Container von Grund auf neu zu erstellen. Sie erstellen es, installieren die Software und das ist so ziemlich alles - es kann in FreeBSD als FreeBSD behandelt werden. Es gibt keine einfache Möglichkeit, diesen Container wie in Docker als einzelne Software zu exportieren. So ziemlich alle Leute, die FreeBSD benutzen, bauen immer ihr eigenes Stück FreeBSD in einem Container von Grund auf neu auf (dh vom installierten Basissystem) und installieren Software vom FreeBSD Ports-System oder vom Quellcode. FreeBSD-Jails sind daher weniger freundlich und haben höhere Startkosten.
  • Ebenso wie die LXC-Container persistent sind, sind auch FreeBSD-Jails persistent. Alle Änderungen bleiben zwischen den Stiefeln erhalten. Wie gesagt, es ist nur ein Teil des Betriebssystems innerhalb desselben Betriebssystems (obwohl die Versionen der Userland-Software variieren können, bis das ABI im FreeBSD-Kernel beibehalten wird). Das heißt , Sie können nicht begehen die Änderungen - sie verpflichtet sind , sobald sie erstellt werden.
  • Aus all dem ist ersichtlich, warum FreeBSD-Container nicht die gleiche Orchestrierungsschicht haben können wie Docker: Es werden keine Ports veröffentlicht, es gibt keine Volumes, es gibt keine Links oder Metaverbindungen zwischen verschiedenen Jails. Nur die Schnittstellen, die das vernetzte Betriebssystem bietet: Netzwerk-Sockets, Unix-Sockets, allgemeine Mount-Punkte.
  • Es gibt natürlich keine Einschränkungen, wer mit wem in FreeBSD-Jails kommunizieren kann, da es in Docker keine gibt.
  • Sie können native Docker-Images in FreeBSD ausführen, da FreeBSD Docker zumindest teilweise unterstützt. Da Linux jedoch kostenlos ist, rate ich dringend davon ab (und ich liebe FreeBSD wirklich und zutiefst), da sie durch Linux-Kompatibilität ausgeführt werden Layer (im Lieferumfang eines FreeBSD-Kernel-Moduls enthalten), der einige bekannte Einschränkungen aufweist.
Drookie
quelle
Weitere Informationen zu docker unter FreeBSD. Früher funktionierte es in einem Gefängnis (stellen Sie sich die doppelte Isolation vor :)). Es wurde von den Hauptentwicklern von FreeNAS als Portierung ermöglicht, da sie es auf dieser Distribution verwenden wollten. Hier ist ein Artikel von ihnen, der darüber und über die alte Wiki-Seite dafür spricht . Seitdem haben sie aufgehört, es zu warten und es scheint nicht mehr zu funktionieren. Weitere folgen im nächsten Kommentar.
Vrakfall
Hier ist der derzeit letzte Forumsbeitrag, in dem es um Dockers Status in FreeBSD geht . Props zu Phishfry für einige der Informationen, die ich hier abgelegt habe. Es ist immer noch möglich, Docker unter FreeBSD zu verwenden, indem Sie es unter einem virtualisierten Linux (bhyve, virtualbox, etc ...) ausführen und den Client-only-Port verwenden , der noch gewartet wird und funktioniert, um eine Verbindung zu ihm herzustellen . Immerhin war boot2docker ursprünglich dafür gemacht, Docker auf diese Weise unter MacOS zu verwenden.
Vrakfall
Und wir wissen, dass MacOS eine (beschämende, hustende , meiner Meinung nach) BSD-Portierung ist . Aber all das ist natürlich nur für eine Entwicklungsumgebung gedacht und kann in keiner Weise in der Produktion verwendet werden. Dies ist für diejenigen, die weiter an FreeBSD arbeiten und Docker-Dinge für ihren Job / Hobby / was auch immer entwickeln möchten.
Vrakfall
Oh und ich habe vergessen zu sagen, aber du hast es erwähnt, der alte docker-freebsdPort benutzte tatsächlich den Linuxulator von FreeBSD .
Vrakfall
Ich möchte nicht nur öffentliche Bilder erstellen. Wenn ich zum Beispiel nicht unzählige Stunden zum Erlernen der Sicherheit verwenden möchte, gehe ich zu dockerhub und schreibe "gehärtet": hub.docker.com/search?q=hardened&type=image und führe von dort aus etwas aus. Es steigert die Produktivität im Vergleich zum Erstellen eines eigenen FreeBSD-Containers von Grund auf, ohne Sicherheitsexperte zu sein. Aber wenn Sie eine alternative ähnlich schnelle Lösung haben, dann teilen Sie sie bitte mit! :-)
inf3rno