Los contenedores son una tecnología que no es nueva en el mundo de los servidores de Linux, pero que actualmente son un tema importante; si lo dudan, Docker, el software que permite esta tecnología y que es el más importante actualmente, acaba de asegurar USD $150 millones en financiamiento; aquellos que lean sobre rondas de financiamiento a startups y demás proyectos de software o de manera general relacionados con computadoras e Internet, sabrán que es hasta cierto punto atípico que un proyecto como Docker reciba este tipo de financiamiento, pero eso es señal de la importancia que tiene actualmente; el que Microsoft lo haya implementado en el próximo Windows Server Nano, creo que también es señal de la importancia de esta tecnología.
Pero, ¿que es la tecnología de contenedores y como funciona? en concepto es algo muy sencillo; partamos del concepto de máquina virtual; estas corren sobre un emulador, que por cada máquina virtual tiene que gestionar una serie de recursos que parten desde el hardware, pasando por los dispositivos y llegando hasta el sistema operativo, y de ahí en adelante; este esquema no es malo, pero tiene una sobrecarga importante para el sistema subyacente donde se ejecutan, así como una gestión engorrosa, lo que a fin de cuentas termina limitando su utilidad.
Los contenedores o contenedores de software, en cambio, ofrecen un esquema similar, aunque compartiendo el sistema operativo; cada uno de estos contenedores puede ejecutar una aplicación o software, llámale como quieras, y tener sus propios recursos; al compartir el sistema operativo y hardware en consecuencia, la sobrecarga de cada contenedor es mínima; en pocas palabras, los contenedores permiten ejecutar muchas más instancias en el mismo hardware comparado con un hipervisor de máquinas virtuales, lo cual resulta en una ventaja importante si hablamos de la actualidad en la que muchas cosas corren en la nube, que no es más que muchísimas computadoras ejecutando un software con una finalidad determinada, pues la tecnología de contenedores permite que se haga un deployment a través de una nube con mucha facilidad. Y esa es una de las ventajas; los desarrolladores lo adoran porque les permite facilitar su trabajo, por ejemplo, creando un contenedor local que replique su ambiente de producción. En su mínima expresión, los contenedores son magníficos para proveer infraestructura.