Siempre se han usado máquinas virtuales en grandes entornos para poder emular distintas máquinas en un mismo soporte físico. Esto producía un gran consumo de recursos y máquinas relativamente grandes. Llegaron los contenedores, y apareció Docker como una alternativa. Una alternativa, en algunos casos, a la virtualizacion basada en hipervisores.
Diferencias con hipervisores.
Ya que una imagen vale más que mil palabras te mostramos aquí la comparativa:
Como bien podemos ver, y recordando el anterior post es muy parecido a un hipervisor de tipo 2 ya que docker corre sobre un sistema operativo. La ventaja de docker es que no corre el sistema operativo por completo, corre solo algunas partes usando partes del sistema operativo en el que esta instalado que suelen ser comunes en todos los sistemas operativos de tipo Linux.
¿Existen alternativas?
Por suerte o por desgracia sí, existen alternativas. Al igual que existen sistemas operativos creados solo para correr docker eliminado todo lo innecesario. Una de las opciones más conocidas es CoreOS pero sacó una alternativa a Docker llamada Rocket.
¿Por qué los contenedores?
Los contenedores se crearon para poder desarrollar o correr aplicaciones en diferentes ambientes con diferentes sistemas operativos sin problemas de compatibilidad. Además estos contenedores puedes correrlos en clusters, correr varias instancias e incluso escalarlos en algunos proveedores de servicios.
¿Por qué ha tenido un gran auge?
Hoy en día todos queremos la mayor simplicidad a la hora de utilizar las cosas. En las empresas buscan lo más generalista para hacerlo una vez y que funcione siempre. Y además queremos tener el menor personal que pueda hacer más cosas, de esto han salido los DevOps, que podriamos explicar como personas que desarrollan y a la vez montan los servicios. Y claro, ¿si eres desarrollador qué sabes de la gestión de sistemas? Esto docker lo hace simplemente; ¿quieres montar un servidor web? Si ya tienes el sistema instalado, es un simple comando.
Además imagina que quieres dar a tus clientes la opción de instalar el sistema, les pasas el archivo de configuración, y con un comando ya está funcionando y configurado.
El caso más usado en ambientes empresariales es cuando dispones de un servidor de produccion y un servidor de pruebas, una vez que el servidor de pruebas está funcionando perfectamente, solo tienes que pasar la configuración al servidor de producción, ya estará todo funcionando, sin más complicaciones, y con la certeza de que va a funcionar exactamente igual que el de producción.
Curiosidades.
Imagino que conocerán algún repositorio de código o de aplicaciones, como Github. Docker tiene algo similar llamado Docker Hub. Aquí tienen ejemplos de archivos de configuración de docker (Dockerfile) que pueden usar o pueden descargar y modificar para adaptarlo a sus necesidades.
Cada vez más aplicaciones y servicios web ofrecen la característica de poder instalarse sobre Docker haciendo más fácil el despliegue.