Orígenes de los containers

Más allá del hype reciente, así como del software libre, los containers dependen de una larga serie de innovaciones anteriores, especialmente en el campo de los sistemas operativos.

1979: UNIX V7

Durante el desarrollo de UNIX v7 en 1970, se introdujo la syscall chroot. _Esta _syscall permite cambiar el directorio root de un proceso y de sus hijos por una nueva ubicación en el sistema de archivos. Este adelanto fue el inicio del aislamiento de procesos: segregando el acceso a los archivos para cada proceso. Chroot fue agregado a BSD en 1982.

2000: FreeBSD Jails

Todo comenzó en el año 2000, cuando el proyecto FreeBSD incluyó jails, una implementación bastante rústica de lo que hoy conocemos como containers. FreeBSD Jails permitía a los administradores dividir un sistema en varios sistemas más pequeños e independientes, llamados "jails", con la habilidad de asignar una dirección IP para cada subsistema y configuración. En otras palabras, los administradores podían lograr una separación limpia entre cada uno de los servicios que querían ejecutar y así lograr mayor seguridad y facilidad de administración.

2001: Linux VServer

Así como los FreeBSD jails, LinuxVServer es una herramienta que permite separar recursos (sistemas de archivos, direcciones de red, memoria) en un sistema. Esta herramienta de virtualización a nivel de sistema operativo se lanzó en el 2001 y fue implementada a modo de parches para el kernel de Linux. Todavía quedan algunas versiones experimentales, pero la última versión estable fue lanzada en el 2006.

2004: Oracle Solaris Containers

En el 2004 Oracle se sumó con su propia versión de containers llamada Solaris Container que era el resultado de combinar un sistema de control de recursos y un sistema de separación de recursos (Solaris Zones) que podían usarse con otras funcionalidades del sistema operativo como snapshots y clones de ZFS.

2005: Open VZ (Open Virtuzzo)

OpenVZ es una tecnología de virtualización a nivel de sistema operativo para Linux que usa una versión parchada del kernel de Linux para virtualización, aislamiento, administración de recursos y checkpointing. El código no fue lanzado como parte del kernel de Linux oficial.

2006: Process containers

Los process containers, desarrollados por Google y disponibles a partir del año 2006, fueron diseñados para limitar, controlar y aislar el uso de recursos (CPU, memoria, disk I/O, redes) de una colección de procesos. Luego fue renombrado a "control groups" o "cgroups" y un año después fueron agregados al kernel de Linux, precisamente en la versión 2.6

2008: LXC

LXC (LinuX Containers) fue la primera y más completa implementación de un administrador de containers para Linux. Fue implementado en el 2008 usando cgroups y namespaces de Linux, y funciona en el kernel de Linux sin requerir parches adicionales.

2011: Warden

CloudFoundry comenzó el proyecto Warden en 2011, usando LXC en las primeras versiones y luego reemplazándolo por su propia implementación. Warden puede aislar entornos en cualquier sistema operativo, corriendo como un daemon y proveyendo una API para la administración de containers. Se desarrolló siguiendo un modelo de cliente-servidor para administrar una colección de containers a través de múltiples hosts, e incluyó un servicio de administración de cgroups, namespaces y del ciclo de vida de los procesos.

2013: LMCTFY

Let Me Contain That For You (LMCTFY) apareció en el 2013 como una alternativa libre para el stack de Google, proveyendo containers para aplicaciones de Linux. Las aplicaciones pueden "containerizarse", creando y administrando sus propios subcontainers. El desarrollo activo de LMCTFY se terminó en el 2015 luego de que Google empezó a contribuir herramientas como libcontainer al core de LMCTFY, que ahora es parte de la Open Container Foundation.

2013: Docker

Y finalmente llegamos a Docker. Todas las iteraciones anteriores en lo que fue el desarrollo de lo que hoy conocemos como containers tuvieron sus adopters y fanáticos, pero cuando Docker arrancó en el 2013 la adopción de containers comenzó a hacerse masiva. No es coincidencia que el crecimiento de Docker y los containers van mano a mano.

Así como lo hizo Warden, Docker también uso LXC en sus inicios y luego lo reemplazó por un administrador de containers con sus propia libreria, libcontainer. Pero no hay duda de que Docker se separó de la manada al ofrecer un ecosistema completo para la administración de containers.

Con Docker, los desarrolladores pueden crear y ejecutar aplicaciones en containers muy rápidamente. Y con el lanzamiento de DockerHub, los desarrolladores pueden descargar y ejecutar aplicaciones fácilmente.

results matching ""

    No results matching ""