Docker-Images, die keinen Paketmanager enthalten

Docker-Images, die keinen Paketmanager enthalten

Ich stelle mir Docker-Container normalerweise als ausführbare Prozesse vor, die kleine Teile einer „Umgebung“ mit sich führen, sodass auf dem Docker-Host nichts installiert werden muss. Zum Beispiel ein Java-JAR zusammen mit einem JRE.

Um die JRE zu installieren, könnten wir mit einer Ubuntu-Basisbox beginnen und sie dann mit Aptitude installieren. Obwohl wir tatsächlich einen Paketmanager benötigen, um die Abhängigkeiten (in diesem Fall eine JRE) für unsere App zu konfigurieren, glaube ich nicht, dass dies unbedingt erforderlich ist, um unsere App auszuführen.

Dies wirft eine Frage auf, die zwar zu weit in der Materie liegt, um von praktischem Interesse zu sein, aber dennoch eine intellektuelle Kuriosität darstellt: Ist es möglich, Abhängigkeiten in einem Docker-Image zu installieren, ohne auch den Paketmanager in das erstellte Image einzubinden?

Wenn man untersucht, wie dies für Chroots erreicht werden könnte, scheint es schwierig oder unmöglich zu sein. Auf den ersten Blick scheint diese Herausforderung lösbar (wenn ich beispielsweise eine Java-Anwendung mit Gradle oder Maven erstelle, muss ich die Gradle- oder Maven-Binärdatei nicht in mein veröffentlichtes Programm einbinden), daher bin ich auch neugierig, warum es keine einfache Lösung zu geben scheint. Arbeitet jemand an dem Problem, Abhängigkeiten in ein Docker-Image (oder ein Chroot, was das betrifft) zu installieren? Wenn nicht, warum nicht?

(Die LösungHierund Lösung 2 vonHiererfordert die Installation eines Paketmanagers in einem Chroot, was meine Frage, wie ich den Paketmanager aus dem Docker-Image bekomme, nicht beantwortet. Lösung 1 aus dem zweiten Teil befasst sich mit dem Erstellen aus dem Quellcode (glaube ich?), was auch nicht genau das ist, wonach ich suche).

verwandte Informationen