En el desarrollo de software, un contenedor se refiere a software empaquetado junto a todas las dependencias necesarias para ejecutarse, lo que los convierte una herramienta de gran utilidad en diversos escenarios.
Entre las características más interesantes de los contenedores se encuentra el hecho que, se ejecutan de forma aislada del resto de procesos, de otros contenedores y en cualquier entorno, en un servidor, máquina local, sistemas *nix, Windows o Mac.
Y aunque en el desarrollo de software la contenedorización no es un concepto nuevo, el conjunto de herramientas que conforman Docker fueron disruptivas desde sus inicios, dado que, fueron desarrolladas para solventar un problema que viene de lejos.
Y es que antes de la aparición de Docker, contenedorizar aplicaciones resultaba más complejo y requería de una serie de conocimientos sobre la configuración y funcionamiento de herramientas como LXC, que es utilizada para crear y gestionar contenedores, pero a diferencia de Docker, a un nivel más bajo.
Esta forma de trabajar con contenedores rápidamente posicionó a Docker como el estándar de facto, para la creación y gestión de contenedores de hoy en día, haciendo de esta tecnología una opción más atractiva frente a las máquinas virtuales.