Contenedores vs. Instancias cloud
La virtualización se viene utilizando desde hace mucho tiempo con el fin de que el software pueda aprovechar toda la capacidad del hardware. Simulando recursos hardware a través del software, la virtualización permite ejecutar múltiples aplicaciones utilizando una parte del hardware físico. Normalmente, cuando se habla de virtualización, se está hablando de la creación de máquinas virtuales que ejecutan un sistema operativo y que tienen asignadas unos recursos parciales del hardware total de la máquina física.
Actualmente, en virtualización se ha hecho muy popular el uso de contenedores, que crean un entorno aislado para ejecutar aplicaciones. El uso de contenedores ayuda a conseguir mayor flexibilidad a la hora de portar aplicaciones entre distintos entornos, pudiendo ser trasladadas entre ambientes con un mínimo o nulo impacto.
En este artículo hablaremos de contenedores y veremos qué son los contenedores Docker y qué es una máquina virtual.
Qué son los contenedores
Los contenedores son unos mecanismos de empaquetado de aplicaciones que permiten ejecutarlas en distintos entornos. Los contenedores separan las aplicaciones del entorno donde se ejecutan permitiendo que se implementen de forma sencilla en distintos tipos de ambientes como servidores, nubes públicas, nubes privadas u ordenadores personales de los propios desarrolladores.
Un contenedor es un entorno de pruebas seguro donde los desarrolladores pueden trabajar en una aplicación en su entorno original, sin tener que preocuparse por la portabilidad de la misma.
Los contenedores se inician a partir de imágenes que incluyen la aplicación, así como los componentes requeridos para que se ejecuten (archivos de configuración, librerías, etc.). El uso de estas imágenes hace que la instalación sea muy sencilla (introduciendo una simple línea de comando).
Por qué usar contenedores
Los contenedores se han hecho muy populares en la actualidad gracias a los múltiples beneficios que aportan. Podemos destacar entre las principales ventajas de los contenedores:
- Ligereza. Los contenedores no virtualizan el sistema operativo completo, ejecutándose directamente en el kernel del sistema operativo, lo que hace que sean mucho más livianos y rápidos a la hora de arrancar. Los contenedores son ideales para transferir y migrar cargas de trabajo por lo que son ideales el desarrollo e implementación de aplicaciones.
- Uniformidad. Los contenedores aportan a los desarrolladores un entorno completo y uniforme que contiene todas las dependencias de software que la aplicación requiere (bibliotecas, versiones de lenguajes de programación y similares).
- Portabilidad. El uso de contenedores brinda una portabilidad y autosuficiencia que permiten ejecutar la aplicación en cualquier entorno como distintos sistemas operativos (Windows, Linux y macOS), equipos físicos, máquinas virtuales, o en la nube.
- Aislamiento. Cada contenedor aísla la aplicación del sistema operativo y de otras aplicaciones. Este aislamiento permite que los desarrolladores puedan trabajar y testear aplicaciones sin que interfieran con otras.
- Ocupan poco espacio. Al contrario de las máquinas virtuales que pueden ocupar muchos gigas de espacio, los contenedores ocupan poco espacio en el disco.
Qué son los contenedores Docker
Docker es un proyecto de código abierto que automatiza el despliegue de aplicaciones dentro de contenedores de software, proporcionando una capa adicional de abstracción y automatización de virtualización de aplicaciones en múltiples sistemas operativos.
Con Docker es posible encapsular todo el entorno de trabajo permitiendo trabajar en los distintos entornos de desarrollo (local, producción, test, etc.) con la misma configuración.
Docker es un programa de código abierto para crear contenedores que cuenta con una gran comunidad de usuarios que, por ejemplo, comparten contenedores a través de Docker hub. Su tecnología permite utilizar el kernel de Linux y sus funciones para separar los procesos (como Cgroups y Namespaces) y permitir que puedan ejecutarse de forma independiente. De esta forma Docker se convierte en una excelente herramienta para la gestión de contenedores individuales.
Cuando el número de contenedores con el que se trabaja empieza a ser elevado, su gestión comienza a complicarse, siendo necesario recurrir a una plataforma de gestión de contenedores, como pueden ser Docker Swarm o Kubernetes.