Erstens, während Docker wird manchmal gesehen und als verwendet Ad - hoc - Verpackungssystem, es löst tatsächlich ein ganz anderes Problem: Docker ist über laufende Programme. Das Docker System ermöglicht beschreiben Dienste, die werden können skaliert nach Belieben und zu steuern , Schwärme von Containern. Debian-Pakete dienen zur Installation von Programmen und können Abhängigkeiten zwischen Softwareversionen verarbeiten. Docker sicherlich nicht als absteigendes Paketierungssystem zu qualifizieren: Jedes "Paket" kann nur eine Abhängigkeit haben, das System hat keine "rekursive Build" -Option und unterstützt keine komplexen Versionsbeschränkungen!
Eine mögliche Antwort wäre, dass Sie, wenn Sie bereit sind, ein Debian-Paket für Ihre Anwendung zu schreiben , Docker auch verwenden können , um Ihre Anwendung bereitzustellen. Dies kann mit einem Konfigurationsskript erreicht werden, apt_setup.sh
das so aussehen würde
apt-key add - <<EOF
-----BEGIN PGP PUBLIC KEY BLOCK-----
<YOUR RELEASE OFFICER PGP KEY GOES HERE>
EOF
cat >> /etc/apt/sources.list <<EOF
deb https://my.organisation.org/repo debian-jessie main
apt-get update -y
apt-get upgrade -y
EOF
und a Dockerfile
nach dem Vorbild von
ADD apt_setup.sh /root
RUN sh -ex /root/apt_setup.sh && rm /root/apt_setup.sh
RUN apt-get install -y my-node-js-package
(In Ihrer speziellen Situation apt_setup.sh
wäre dies komplizierter, wenn Sie die Nodesource- Repositorys und einige Hilfspakete wie apt-transport-https hinzufügen würden .)
Es ist also wirklich möglich, Debian-Pakete und Docker gleichzeitig zu verwenden.
Mein Bauch […] sagt mir, dass Deb-Pakete, wenn sie gut zusammenpassen, häufiger wären
Dies ist ein korrektes Problem, das uns dazu bringt, uns zu fragen, warum Docker als Ad-hoc- Verpackungssystem beliebt ist, obwohl dies nicht beabsichtigt ist. (Siehe oben.)
Das "offizielle" Paketierungssystem einer bestimmten Distribution ist unter anderem nur eine Möglichkeit, Software in einer bestimmten Computerumgebung zu installieren. Es sind viele andere Quellen verfügbar, wie z. B. community-spezifische Paketmanager wie npm oder opam, Portbäume wie pkgsrc und die Distribution von einfachem Quellcode. Aus dieser Perspektive ist der Erfolg von Docker als Ad-hoc- Verpackungssystem leicht zu verstehen :
Docker- Spezifikationen sind einem Shell-Skript sehr ähnlich, und unabhängig von der Quelle, von der es stammt, installieren wir Software mithilfe der Shell.
Docker verfügt über einen integrierten (kostenpflichtigen) Service für das Hosten von Artefakten, den Docker Hub .
Was ist nun die Stärke von Debian-Paketen gegenüber Docker-Images als Paketsystem? Die enge Kontrolle über Abhängigkeiten bei der Installation. (Die Möglichkeit zum Upgrade und Downgrade ist ebenfalls vorhanden, hat jedoch keine praktische Bedeutung, wenn das unveränderliche Servermuster implementiert wird.) Dies führt zu
Fazit
Wenn Sie nur ein einziges Produkt in einer einzigen Version bereitstellen (was typisch für SaaS ist), sind Ihre Versionsverwaltungsanforderungen sehr einfach, und die Verwendung von Docker als Ad-hoc- Paketmanager sollte keine schwerwiegenden Nachteile haben. Sobald Sie mit mehreren Versionen eines einzelnen Produkts oder mehrerer Produkte arbeiten, steigt die Komplexität des zu lösenden Versionsbeschränkungsproblems und Sie benötigen dafür ein geeignetes Tool, bei dem es sich möglicherweise um Debian-Pakete oder ein Konfigurationsverwaltungssystem handelt Mischsoftware unterschiedlicher Herkunft.