A estas alturas de la película, quien más y quien menos ha escuchado hablar de Docker, esa tecnología que ya lleva tiempo entre nosotros y que cada vez está más presente. De la misma manera, esta entrada no busca ser un tutorial o una guía muy exhaustiva, pero sí dar cuatro pinceladas a este producto que tanto está revolucionando.
Si habéis buscado en internet, habréis visto que la idea de fondo de los contenedores es similar a la de las máquinas virtuales; la gran diferencia es que las máquinas virtuales emplean recursos asignados en correr un segundo sistema operativo sobre el host que corren, mientras que los contenedores se aprovechan del sistema operativo subyacente y comparten algunas librerías y recursos con él, de manera que nos ahorramos recursos que podemos dedicar a levantar más contenedores.
En esta imagen se ve bastante claro lo que os decía
(fuente)
En el caso de las máquinas virtuales, sobre el SO tenemos el hipervisor que nos permite virtualizar el hardware e instalar diferentes instancias, cada una con sus sistema operativo propio, binarios, librerías y las aplicaciones que deseamos correr sobre ellas. De esta manera se hace un uso intensivo de los recursos del hardware que tenemos.
El caso de los contenedores es similar, pero nos permite aprovechar mejor los recursos; sobre el sistema operativo instalamos el motor de Docker, y encima desplegamos los contenedores y nuestras aplicaciones. Estos contenedores son imágenes relativamente pequeñas comparadas con un sistema operativo (llegando a unos pocos MB), y a nivel de recursos no tienen el mismo gasto que si fuera un sistema operativo completo.
Otra de las ventajas de docker sobre máquinas virtuales es que no requiere del gasto que implica la compra o alquiler de hardware para poder virtualizar instancias, sino que se puede desplegar tanto en entornos físicos como virtuales.
Un saludo!