Flocker agrupa los contenedores y los datos de Docker para facilitar el transporte

A medida que los contenedores Docker se utilizan cada vez más, sus deficiencias también se vuelven más claras. ¿Cómo, por ejemplo, migra un contenedor en ejecución junto con sus datos a otro servidor y preserva sus datos en el proceso? Por lo general, no es así.

ClusterHQ, una startup fundada en parte por colaboradores principales del motor de red Python Twisted, tiene una solución propuesta. Flocker, un administrador de volumen de datos de código abierto (Apache) para aplicaciones Dockerized que ahora está en su versión 1.0, permite que volúmenes de datos (también conocidos como conjuntos de datos) se asocien con contenedores y se muevan con ellos.

Manteniéndolo todo junto

Flocker agrupa contenedores y conjuntos de datos, lo que garantiza que se muevan juntos siempre que una aplicación Dockerizada se transfiera entre hosts en un clúster determinado. La única limitación es que el almacenamiento de los datos debe ser proporcionado por un back-end de almacenamiento compartido accesible para todos los nodos del clúster.

En este momento, solo se admiten algunos tipos de back-end de almacenamiento, en su mayoría orientados a la nube: Amazon EBS, Rackspace Cloud Block Storage y EMC ScaleIO. El almacenamiento basado en ZFS también es compatible, aunque solo a través de un back-end que actualmente es experimental.

"Cualquier cosa para la que usaría VMware vMotion", dijo Mark Davis, director ejecutivo de ClusterHQ, "son las mismas razones por las que puede querer mover un contenedor. Y si un contenedor tiene datos, necesita algo como Flocker".

Dicho esto, una característica de vMotion, la migración en vivo de aplicaciones en ejecución, aún no está lista en Flocker. Sus migraciones son "un tiempo de inactividad mínimo", en lugar de un tiempo de inactividad cero, lo que significa que hay una pequeña ventana de indisponibilidad durante el proceso de migración. Luke Marsden, director de tecnología y cofundador de ClusterHQ, declaró en una llamada telefónica que el tiempo de inactividad "depende de la velocidad con la que el back-end puede separar un volumen de una VM y adjuntarlo a otra VM. Pero estamos muy interesados ​​en minimizando ese tiempo de inactividad ".

ClusterHQ ya tiene características experimentales en proceso para acelerar el proceso por medio de instantáneas de volumen, aunque el back-end necesita admitir instantáneas para que sea viable.

Piezas faltantes de Docker

Docker ha trabajado tradicionalmente con datos a través de volúmenes de datos, pero vienen con sus propias limitaciones. Copiar datos manualmente entre contenedores aún no es simple (supuestamente corregido en Docker 1.7), pero el muro más grande sigue siendo el mal estado de administración de los datos compartidos por contenedores Docker que se ejecutan en diferentes ubicaciones.

Una propuesta actual para Docker implica poner a disposición de los contenedores un nuevo tipo de almacenamiento, donde terceros pueden proporcionar controladores de dispositivos para sus propios tipos de almacenamiento. Si se implementara una característica de este tipo, no sería difícil para ClusterHQ reelaborar su soporte a través de su arquitectura de complementos de back-end de conjunto de datos y mantenerse un paso por delante de cualquier funcionalidad que se incorpore al núcleo de Docker con el tiempo.