Primero, aunque Docker se ve y se usa a veces como un sistema de empaquetado ad hoc , en realidad resuelve un problema totalmente diferente: Docker se trata de ejecutar programas. El sistema Docker permite describir servicios, que se pueden escalar a voluntad y controlar enjambres de contenedores. Los paquetes Debian son para instalar programas y pueden manejar dependencias entre versiones de software. Estibador ciertamente no califica como un sistema de empaque descendente: cada "paquete" solo puede tener una dependencia, el sistema no tiene una opción de "construcción recursiva" y no admite restricciones de versión complejas.
Una posible respuesta sería que, si está dispuesto a escribir un paquete Debian para su aplicación, también puede usar Docker para implementar su aplicación. Esto se puede lograr con un script de configuración apt_setup.sh
que se vería como
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
y a lo Dockerfile
largo de las líneas de
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
(En su situación específica, apt_setup.sh
sería más complicado, agregando los repositorios del origen de nodos y algunos paquetes auxiliares como apt-transport-https ).
Por lo tanto, es realmente posible usar paquetes Debian y Docker simultáneamente, sin embargo ...
Mi instinto [...] me dice que si los paquetes deb fueran una buena opción, sería más común
Este es un problema correcto que nos lleva a preguntarnos por qué Docker demuestra ser popular como un sistema de empaquetado ad hoc , mientras que no está destinado a serlo. (Véase más arriba.)
El sistema de empaque "oficial" de una distribución dada es solo una posibilidad, entre muchas otras, de instalar software en algún entorno informático. Hay muchas otras fuentes disponibles, como administradores de paquetes específicos de la comunidad, como npm u opam, árboles de puertos como pkgsrc y distribución de código fuente simple. Desde esta perspectiva, es fácil entender el éxito de Docker como un sistema de empaquetado ad hoc :
Las especificaciones de Docker están muy cerca de un script de shell y de cualquier fuente de la que provenga, instalamos software usando el shell.
Docker tiene un servicio "incorporado" (de pago) para alojar los artefactos que produce, el Docker Hub .
¿Cuáles son las ventajas de los paquetes de Debian sobre las imágenes de Docker como un sistema de paquetes? El control estricto sobre las dependencias en la instalación. (La posibilidad de actualizar y degradar también existe, pero no tiene importancia práctica si estamos implementando el patrón de servidor inmutable ). Esto lleva a
Conclusión
Si solo tiene un único producto implementado en una única versión (lo cual es típico para SaaS), sus necesidades de administración de versiones son muy simples y usar Docker como administrador de paquetes ad hoc no debería tener inconvenientes. Tan pronto como trabaje con varias versiones de un solo producto o varios productos, la complejidad del problema de restricciones de versión que necesita resolver aumenta y necesita una herramienta adecuada para esto, que pueden ser paquetes Debian o algún sistema de administración de configuración si está software de mezcla de diferentes orígenes.