27 Punkte von GN⁺ 2024-03-08 | 2 Kommentare | Auf WhatsApp teilen
  • Ein Tool zum Kompilieren von Docker-Images in eigenständige, portable Binärdateien
  • Ermöglicht es, Nutzern ausführbare Binärdateien bereitzustellen, die ohne Befehle wie docker run, pip install oder npm i ausgeführt werden können

Funktionen

  • Kompiliert Docker-Images in portable Binärdateien.
  • Container ohne Root-Rechte.
  • Unterstützung für MacOS und Windows (unter Verwendung von QEMU): geplant
  • Unterstützung für x86_64 (arm64-Unterstützung geplant)
  • Unterstützung für Argumente
  • Unterstützung zum Setzen von Umgebungsvariablen mit -e.
  • Unterstützung zum Angeben von Volumes mit -v.

Verwendung

  • dockerc aus dem neuesten Release installieren.
  • Mit einem Image aus Docker Hub oder aus dem lokalen Docker-Daemon-Repository die Ausgabe-Binärdatei erzeugen.
  • Die erzeugte Binärdatei kann wie eine gewöhnliche Binärdatei aufgerufen werden.
  • Die Optionen -e und -v können genauso angegeben werden wie bei der Verwendung von docker run.
  • Auf Netzwerkdienste, die innerhalb des Containers laufen, kann direkt zugegriffen werden; die Angabe von -p ist nicht erforderlich.
  • Zum Laden von Images wird Skopeo verwendet; für andere Speicherorte siehe die entsprechende Dokumentation.

Meinung von GN⁺

  • dockerc ist ein Tool, das die Nutzbarkeit von Docker erheblich verbessern kann, da es Anwendern ermöglicht, Anwendungen ohne komplexe Installationsprozesse auszuführen. Das kann besonders für nichttechnische Nutzer sehr nützlich sein.
  • Die Funktion, Docker-Images in Binärdateien zu kompilieren, vereinfacht Verteilung und Deployment und spart Entwicklern und Systemadministratoren Zeit und Aufwand.
  • Damit sich diese Technologie jedoch breit durchsetzen kann, müssen Fragen zu Sicherheit, Performance und Kompatibilität ausreichend geklärt werden. Es muss zum Beispiel geprüft werden, ob die kompilierten Binärdateien genauso sicher sind wie die ursprünglichen Docker-Images und ob sie auf allen Systemen reibungslos funktionieren.
  • Ein anderes Projekt mit ähnlichen Funktionen wie Docker ist Podman, das ebenfalls Container ohne Root-Rechte ausführen kann.
  • Bei der Einführung von dockerc sollten die Integration in bestehende Docker-Workflows, die Aktualisierung und Verwaltung von Images sowie Größe und Performance der kompilierten Binärdateien berücksichtigt werden. Die Vorteile dieser Technologie liegen in der Vereinfachung der Verteilung und der leichten Nutzung, gleichzeitig sollten aber der mögliche Overhead des Kompilierungsprozesses und potenzielle Kompatibilitätsprobleme sorgfältig abgewogen werden.

2 Kommentare

 
cosine20 2024-03-11

Oh, ziemlich interessant.

 
GN⁺ 2024-03-08

Hacker-News-Kommentare

  • Das ist wirklich cool.

    • Der Nutzer versucht, sein Docker besser verteilbar zu machen. Derzeit automatisiert er Klicks und verwendet netcat mit einem einfachen Python-Skript in einer Python-Umgebung in einem Docker-Container in einem QEMU-Container. Die Dateigröße beträgt 20 GB und ist nach heutigen Maßstäben ziemlich schlank.
  • Früher habe ich nix-bundle¹ oder sein offizielles Gegenstück nix bundle² verwendet und empfohlen.

    • Mit diesen Tools kann man den Schritt überspringen, Docker-Images direkt zu verwalten. Das ist besonders praktisch, wenn das Erstellen von Docker-Images schwierig ist oder der Prozess zu einer vergessenen Kunst geworden ist.
    • nix bundle kann nicht nur fette Executables erzeugen, sondern auch Docker-Images, AppImages und einige andere Formate von Images/Executables.
  • Es ist wirklich schön, zu portablen Executables mit eingebautem OS zurückzukehren.

    • Das hebt "läuft auf meinem Rechner" auf eine neue Stufe der Problemlösungs-Hölle. Trotzdem ist das Projekt cool.
  • Der Nutzer wartet darauf, dass Leute anfangen, Dockerfiles zu schicken, die Docker-Container erzeugen, welche diese Dinge ausführen.

  • Darin steckt eine große kosmische Ironie.

    • Direkt auf den Abschnitt, in dem nur eine Executable verlangt wird, die ohne Build oder Installation läuft, folgt unmittelbar der Zig-Beschwörungszauber zum Bauen dieses Projekts.
  • Das ist ein cooler Fortschritt, Nils! Ich freue mich, den Fortschritt des Projekts zu sehen, seit wir im AGI House darüber gesprochen haben.

    • dockerc verwendet Zig + crun + squashfs/overlayfs. Nils (der Autor) hat in diesem Thread weitere Informationen geteilt.
  • Für andere Architekturen braucht man immer noch andere Dinge.

    • An diesem Punkt wäre es meiner Meinung nach besser, statisch zu kompilieren und ein virtuelles Dateisystem einzubetten. Das ist im Grunde dasselbe wie das, was Sun in den 90ern gebaut hat.
  • Gute Idee! Wie funktioniert das eigentlich?

    • Der Nutzer vermutet, dass es sich um einen benutzerdefinierten Loader + Docker + ein Image handelt, die in ein ausführbares Binary verpackt werden.
  • Es ist cool, dass das Lant-Bild verwendet wurde.

    • Das nächste Lant-Bild wird wohl lauten: "Wenn man eine Executable ausführt, sollte sich ein Fenster mit der entsprechenden Anwendung öffnen."
  • Was bedeutet das? Kann man damit ein portables Ruby-Executable verteilen, ohne dass der Nutzer Ruby installieren muss?