Innanzitutto, mentre Docker viene talvolta visto e utilizzato come sistema di packaging ad hoc , risolve in realtà un problema completamente diverso: Docker riguarda l' esecuzione di programmi. Il sistema Docker consente di descrivere servizi che possono essere ridimensionati a piacimento e di controllare sciami di container. I pacchetti Debian sono per l'installazione di programmi e sono in grado di gestire le dipendenze tra le versioni del software. docker certamente non si qualificano come un sistema di packaging di discesa: ogni “pacchetto” può avere solo una dipendenza, il sistema non ha un'opzione “build ricorsiva” e non supporta vincoli di versione complessi!
Una possibile risposta sarebbe che, se si è disposti a scrivere un pacchetto Debian per la propria applicazione, è anche possibile utilizzare Docker per distribuire l'applicazione. Questo può essere ottenuto con uno script di configurazione apt_setup.sh
che dovrebbe apparire
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
e a Dockerfile
lungo le linee di
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
(Nella tua situazione specifica, apt_setup.sh
sarebbe più complicato, aggiungendo i repository di nodesource e alcuni pacchetti di supporto come apt-transport-https .)
È quindi davvero possibile usare i pacchetti Debian e Docker contemporaneamente, tuttavia ...
Il mio istinto […] mi sta dicendo che se i pacchetti deb fossero adatti, sarebbe più comune
Questo è un intoppo corretto che ci porta a chiederci perché Docker si è rivelato popolare come sistema di confezionamento ad hoc , mentre non è destinato a esserlo. (Vedi sopra.)
Il sistema di packaging "ufficiale" di una determinata distribuzione è solo una possibilità tra molti altri di installare software in un ambiente informatico. Ci sono molte altre fonti disponibili, come i gestori di pacchetti specifici della comunità come npm o opam, alberi port come pkgsrc e distribuzione semplice del codice sorgente. Da questo punto di vista, è facile comprendere il successo di Docker come sistema di packaging ad hoc :
Le specifiche Docker sono molto simili a uno script della shell e qualunque sia la fonte da cui provengono, installiamo il software usando la shell.
Docker ha un servizio "incorporato" (a pagamento) per l'hosting di manufatti che produce, l' hub Docker .
Ora quali sono i punti di forza dei pacchetti Debian sulle immagini Docker come sistema di pacchetti? Lo stretto controllo sulle dipendenze durante l'installazione. (Esiste anche la possibilità di eseguire l'upgrade e il downgrade ma non ha alcuna importanza pratica se stiamo implementando il modello di server immutabili .) Questo porta al
Conclusione
Se si dispone di un solo prodotto distribuito in un'unica versione (che è tipica di SaaS), le esigenze di gestione della versione sono molto semplici e l'utilizzo di Docker come gestore di pacchetti ad hoc non dovrebbe presentare gravi inconvenienti. Non appena lavori con diverse versioni di un singolo prodotto o più prodotti, la complessità del problema dei vincoli di versione che devi risolvere aumenta e hai bisogno di uno strumento appropriato per questo, che potrebbe essere pacchetti Debian o qualche sistema di gestione della configurazione se lo sei miscelazione di software di origini diverse.