Si eres parte del círculo de TI de centros de datos o computación en la nube, durante el último año o más deberías haber estado escuchando sobre los contenedores ordinarios, especialmente Docker; las noticias sobre ellos no han cesado. Tras el lanzamiento de Docker 1.0 en junio de 2014, su impulso alcanzó un nivel sin precedentes.

La razón por la que el revuelo fue tan grande es que muchas empresas están adoptando Docker a una velocidad asombrosa. En la conferencia de código abierto (OSCon) de julio de 2014, me encontré con innumerables empresas que ya habían trasladado sus aplicaciones de servidor desde máquinas virtuales (VM) a contenedores. De hecho, James Turnbull, vicepresidente de servicios y soporte de Docker, me dijo en la conferencia que tres grandes bancos habían estado usando la versión beta de Docker y ahora la usan en producción. Para cualquier tecnología temprana, esto es sin duda una muestra de gran confianza, algo casi inaudito en el sector financiero, donde la seguridad es primordial.

Al mismo tiempo, Docker, esta tecnología de código abierto, no es solo la favorita de gigantes de Linux como Red Hat y Canonical. Empresas de software propietario como Microsoft también están abrazando con entusiasmo Docker.

Entonces, ¿por qué todos persiguen los contenedores y Docker? James Bottomley, CTO de virtualización de servidores en Parallels y reconocido desarrollador del kernel de Linux, me explicó que los hipervisores como Hyper-V, KVM y Xen se basan en mecanismos de emulación de hardware virtualizado. Eso significa que tienen altos requisitos del sistema.

Sin embargo, los contenedores utilizan un sistema operativo compartido. Esto significa que son mucho más eficientes en el uso de los recursos del sistema que los hipervisores. En lugar de virtualizar el hardware, los contenedores residen en una única instancia de Linux. A su vez, esto significa que puedes “descartar el 99,9 % de la basura inútil de las máquinas virtuales, dejando un pequeño y limpio contenedor tipo cápsula que contiene tu aplicación”, dijo Bottomley.

Según Bottomley, por lo tanto, con un sistema de contenedores completamente optimizado, puedes tener en el mismo hardware entre cuatro y seis veces más instancias de aplicaciones de servidor que con máquinas virtuales Xen o KVM.

¿Suena muy bien, verdad? Después de todo, puedes hacer que el servidor ejecute muchas más aplicaciones. Entonces, ¿por qué nadie lo había hecho antes? En realidad, ya se había hecho antes. El contenedor es en realidad un concepto antiguo.

Los contenedores se remontan al menos al año 2000 y a FreeBSD Jails. Oracle Solaris también tiene un concepto similar llamado Zones; empresas como Parallels, Google y Docker han estado trabajando en proyectos de código abierto como OpenVZ y LXC (contenedores de Linux) para que los contenedores funcionen de manera fluida y segura.

Es cierto que pocos conocen los contenedores, pero la mayoría de la gente los ha estado usando durante años. Google tiene su propia tecnología de contenedores de código abierto, lmctfy (Let Me Contain That For You, que significa “déjame contener eso por ti”). Cada vez que usas alguna función de Google, como búsqueda, Gmail, Google Docs o lo que sea, se te asigna un nuevo contenedor.

Sin embargo, Docker se basa en LXC. Como cualquier tecnología de contenedores, en lo que respecta al programa, tiene sus propios componentes como sistema de archivos, sistema de almacenamiento, procesador y memoria. La principal diferencia entre contenedores y máquinas virtuales es que el hipervisor abstrae todo el dispositivo, mientras que el contenedor solo abstrae el kernel del sistema operativo.

Esto a su vez significa que una cosa que el hipervisor puede hacer y los contenedores no es usar diferentes sistemas operativos o kernels. Por ejemplo, puedes usar Microsoft Azure y ejecutar simultáneamente instancias de Windows Server 2012 e instancias de SUSE Linux Enterprise Server. En cuanto a Docker, todos los contenedores deben usar el mismo sistema operativo y kernel.

Por otro lado, si lo único que quieres es ejecutar tantas instancias de aplicaciones de servidor como sea posible en la menor cantidad de hardware posible, probablemente no te importe ejecutar múltiples máquinas virtuales con diferentes sistemas operativos. Si lo que necesitas son varias copias de la misma aplicación, entonces te encantarán los contenedores.

La adopción de Docker promete ahorrar a los centros de datos o proveedores de servicios de computación en la nube decenas de millones de dólares al año en costos de electricidad y hardware. Así que no es de extrañar que todos se estén apresurando a adoptar Docker lo antes posible.

Docker aporta varias características nuevas que las tecnologías anteriores no tenían. Primero, en comparación con los métodos anteriores, Docker facilita y hace más segura la implementación y el uso de contenedores. Además, Docker ha colaborado con otros gigantes del ámbito de los contenedores, incluidos Canonical, Google, Red Hat y Parallels, para desarrollar conjuntamente su componente de código abierto clave, libcontainer, que aporta la estandarización que tanto se necesitaba para los contenedores.

Al mismo tiempo, los desarrolladores pueden usar Docker para empaquetar, entregar y ejecutar cualquier aplicación; la aplicación se convierte en un contenedor LXC ligero, portátil y autosuficiente que puede ejecutarse en cualquier lugar. Como me dijo Bottomley: “Los contenedores te brindan portabilidad de aplicaciones de inmediato”.

Jay Lyman, analista senior de la firma de investigación de mercado 451 Research, agregó: “Las organizaciones empresariales buscan hacer que las aplicaciones y las cargas de trabajo sean más fáciles de portar y distribuir de manera eficiente, estandarizada y repetible, y a veces esto es difícil de lograr. Así como GitHub promueve la colaboración y la innovación mediante el intercambio de código fuente, Docker Hub, Official Repos y el soporte comercial también están ayudando a muchas empresas a abordar este desafío mejorando la forma en que empaquetan, implementan y gestionan las aplicaciones”.

Por último, pero no menos importante, los contenedores Docker son fáciles de implementar en la nube. Como escribió Ben Lloyd Pearson en opensource.com: “Docker adopta un enfoque particular para poder integrarse en la mayoría de las aplicaciones de DevOps (desarrollo y operaciones), incluidas Puppet, Chef, Vagrant y Ansible, o puede usarse de forma independiente para gestionar entornos de desarrollo. El principal atractivo es que simplifica muchas de las tareas que normalmente realizan estas otras aplicaciones. En concreto, con Docker, se puede crear un entorno de desarrollo local idéntico al servidor de producción, ejecutar múltiples entornos de desarrollo desde el mismo host (cada uno con su propio software, sistema operativo y configuración), probar proyectos en servidores nuevos o diferentes, y permitir que cualquiera trabaje en el mismo proyecto con una configuración idéntica, sin importar el entorno del host local”.

En resumen, lo que Docker puede hacer por ti es: en comparación con otras tecnologías, permite ejecutar una mayor cantidad de aplicaciones en el mismo hardware; facilita a los desarrolladores crear rápidamente aplicaciones contenerizadas listas para ejecutarse; y simplifica enormemente las tareas de gestionar y desplegar aplicaciones. En definitiva, puedo entender por qué Docker se ha vuelto tan popular de repente como tecnología de nivel empresarial. Solo espero que esté a la altura de las expectativas, de lo contrario habrá algunos CEO y CIO preocupados por ahí.

Fuente: http://cloud.51cto.com/art/201410/453718.htm