Was ist der Hauptunterschied zwischen Docker und Snap?

85

In der letzten c't (leider paywalled ) gibt es einen Artikel über Snap und Flatpak.

Bildbeschreibung hier eingeben

Dies klingt Docker sehr ähnlich, viele Konzepte sind gleich. Nun meine Frage, was ist der Unterschied zwischen Snap und Docker? Sind das verschiedene Anwendungsfälle?

Ivanov
quelle

Antworten:

109

Vielleicht finden Sie Mark Shuttleworths Vortrag "Warum wir einen anderen Container nur für Apps benötigen" im Container Camp, der für Ihre Frage relevant ist. Er spricht zu Beginn allgemein über VMs, Container und Docker, fängt dann an und erklärt, wie sie in ungefähr neun Minuten passen. Hier ist meine Zusammenfassung:

  • Verschiedene Arten von Behältern sehen gleich aus, werden jedoch für unterschiedliche Zwecke verwendet.
  • Container existieren auf Kernel-Ebene nicht wirklich. Verschiedene Arten von Illusionen sind möglich. Unabhängig davon können wir uns Illusionen darüber machen, was Benutzer, Netzwerk, Datenträger und Prozesse in einem Container sehen.
  • Verschiedene Arten von Behältern handeln wirklich von verschiedenen Klassen der Illusionen, die erzeugt werden.
  • Schnappschüsse sind:
    • Unveränderlich, aber immer noch Teil des Basissystems.
    • Im Gegensatz zu Docker, bei dem jeder Container eine eigene IP-Adresse erhält, ist die System-IP-Adresse netzwerkintegriert.
    • Mit anderen Worten, gibt Docker uns eine Sache gibt . Snaps gibt uns eine Sache hier . Auf einem Desktop bietet ein Snap beispielsweise eine App direkt darauf.
    • Ein Schnappschuss kann den Rest des Systems nicht verschmutzen. Es ist in einer eigenen Box. Es kann jedoch den Rest des Systems weiterhin anzeigen (nur lesen), sodass es kommunizieren und sich in das System integrieren kann.

Sie haben nach anderen Anwendungsfällen als Docker gefragt. Hier ist eine, die Snaps ausführen können, Docker jedoch nicht: Desktop-Apps. Drittanbieter können Desktop-Apps mithilfe von Snaps ausliefern und Benutzer können sie problemlos installieren und aktualisieren. Ein Docker-Container kann nicht (einfach) grafisch auf dem Bildschirm mit dem Benutzer interagieren, Dokumente aus dem Benutzerverzeichnis laden oder Videokonferenzen über die Webcam des Benutzers durchführen. Schnappschüsse können (einmal erteilte Erlaubnis).

Sie könnten fragen, wie dies besser ist als die Verwendung von PPAs. Aber im Vergleich zu Docker ist das so, als würde man fragen, wie Docker besser ist, als Abhängigkeiten von Hand auf einem System zu installieren. Es ist besser, aber wie genau würde wahrscheinlich am besten in einer separaten, nicht Docker-spezifischen Frage beantwortet werden.

Robie Basak
quelle
3
Das ist nicht wahr. Docker kann mit Desktop-Anwendungen interagieren (sobald die Berechtigung erteilt wurde). github.com/jamrizzi/docker-gtk
Jam Risser
2
Das klingt nach Sandboxie für Windows. Sandbox-Programme können Dialoge öffnen, auf alle lokalen Dateien zugreifen, aber wenn sie schreiben, schreiben sie einfach in ihre Sandbox.
feedc0de
1
Womit können Sie dieses Tool anders verknüpfen als mit einem normalen Docker? Sie können Ihren x11-Sockel ohne spezielle Docker-Version im Docker einbauen.
feedc0de
1
Es ist kein Werkzeug, es ist eine Demonstration
Jam Risser
1
@jamrizzi Es sieht so aus, als ob Sie dem Docker einfach Zugriff auf den X11-Socket in einem Skript gewähren. Dies ist weit davon entfernt, den Benutzer in diesen Prozess zu involvieren (wo ist der Dialog "Docker möchte auf das Display zugreifen. Abbrechen oder Zulassen?")
Thorbjørn Ravn Andersen