2.1. Introducción
Una vez hemos visto los entornos Conda, nos introduciremos en otra metodología para controlar los procesos que utilizamos: los contenedores.
Los contenedores son sistemas de virtualización que contienen todas las herramientas necesarias para ejecutar un software. Muy a menudo se comparan las máquinas virtuales con los contenedores. La diferencia más importante es que las máquinas virtuales virtualizan toda una máquina hasta las capas de hardware, mientras que los contenedores únicamente virtualizan la capa de software encima del sistema operativo. Esta característica los hace más ligeros y fáciles de modificar.
Aunque los contenedores no son una tecnología nueva, su aplicación de manera extensa empezó con la aparición de Docker en 2013. La popularización de estas aplicaciones introdujo la complejidad de administrar cientos o miles de contenedores, y por ello apareció lo que se conoce como la orquestación de contenedores. Aunque a lo largo del tiempo han aparecido distintas plataformas de orquestación, inclusive una del mismo Docker, como es Docker Swarm, Google creo en 2014 Kubernetes, de código abierto, que se ha convertido en el software preferido de muchas empresas y se ha consolidado como un estándar. Las plataformas de orquestación se encargan de reiniciar las aplicaciones si fallan, de equilibrar la carga de trabajo, de escalar automáticamente, de implementar sin tiempo de inactividad, etc.
Aunque en sistemas HPC (High Performance Computing) se utiliza más Singularity, en este apartado de contenedores nos centraremos en cómo utilizar Docker.