Con los avances tecnológicos, han aparecido soluciones cada vez más eficientes que garantizan el mejor desempeño de las plataformas. Después de la virtualización, la tecnología de contenedores (containers) ha llegado a ganar espacio y popularidad y ahí es donde encontramos Docker.
Hoy vamos a hacer una breve introducción a esta tecnología y descubrir por qué se está haciendo tan popular.
1. Breve Historia de Docker
Hace cinco años, Solomon Hykes ayudó a fundar un negocio, Docker, que buscaba que los contenedores fueran fáciles de usar. Con el lanzamiento de Docker 1.0 en junio de 2014, el rumor se convirtió en un rugido. Y, a lo largo de los años, cada vez es más ruidoso.
Todo el ruido está sucediendo porque las empresas están adoptando Docker a un ritmo notable.
Hoy, Docker, y su padre de código abierto ahora llamado Moby, es más grande que nunca. Según Docker, se han colocado más de 3,5 millones de aplicaciones en contenedores utilizando tecnología Docker y se han descargado más de 37 mil millones de aplicaciones en contenedores.
Docker, una tecnología de código abierto, no es solo la favorita de los poderes de Linux como Red Hat y Canonical. Las compañías propietarias de software como Oracle y Microsoft también han adoptado a Docker. En la actualidad, casi todas las empresas de TI y en la nube han adoptado Docker.
2. Historia de contenedores
Los contenedores datan de al menos el año 2000 con las jaulas (“jails“) de FreeBSD. Oracle Solaris también tiene un concepto similar llamado Zones, mientras que empresas como Parallels, Google y Docker han estado trabajando en proyectos de código abierto como OpenVZ y LXC (Linux Containers) para que los contenedores funcionen bien y de forma segura.
De hecho, pocos lo sabemos, pero la mayoría de nosotros hemos estado usando contenedores durante años. Google tiene su propia tecnología de contenedores de fuente abierta lmctfy – Let Me Contain That For You. Cada vez que utiliza alguna de las funciones de Google (Búsqueda, Gmail, Google Docs, lo que sea), se le envía un nuevo contenedor.
https://github.com/google/lmctfy
Docker, sin embargo, está construido encima de LXC. Al igual que con cualquier tecnología de contenedor, en lo que respecta al programa, tiene su propio sistema de archivos, almacenamiento, CPU, RAM, etc. La diferencia clave entre los contenedores y las máquinas virtuales es que mientras el hipervisor abstrae un dispositivo completo, los contenedores abstraen el kernel del sistema operativo.
Esto, a su vez, significa una cosa que los hipervisores de MV pueden hacer y que los contenedores no pueden: usar sistemas operativos o kernels diferentes. Entonces, por ejemplo, puede usar Microsoft Azure para ejecutar ambas instancias de Windows Server 2012 y SUSE Linux Enterprise Server, al mismo tiempo. Con Docker, todos los contenedores deben usar el mismo sistema operativo y kernel.
Por otro lado, si todo lo que desea hacer es obtener la mayor cantidad de instancias de aplicaciones de servidor que se ejecutan en la menor cantidad de hardware, no podría importarle menos la ejecución de múltiples máquinas virtuales del sistema operativo. Si lo que desea son varias copias de la misma aplicación, le encantarán los contenedores.
3. Docker, ¿qué es?
De forma muy resumida, podemos decir que Docker es una plataforma abierta, creada con el objetivo de facilitar el desarrollo, la implantación y la ejecución de aplicaciones en ambientes aislados. Se ha diseñado especialmente para ofrecer una aplicación de la forma más rápida posible.
Para aquellos que no lo saben, Docker es una plataforma de desarrollo de código abierto, de aprovisionamiento y ejecución de aplicaciones que se basa en el lenguaje de programación Go de Google. Esta plataforma tiene como principal objetivo facilitar la creación y gestión de ambientes aislados con la tecnología de contenedores.
Docker ha ganado mucha popularidad por el hecho de permitir “empaquetar” una aplicación o sistema dentro de un contenedor (ambiente aislado), siendo que este contenedor puede posteriormente ejecutarse en cualquier máquina que tenga Docker instalado.
Para quien ejerce la administración de sistemas, esta es una característica bastante interesante ya que el administrador puede configurar una sola vez un servicio y logra ejecutarlo en cualquier sistema (sin complicaciones).
Este movimiento puede ahorrarle a un centro de datos o proveedor de la nube decenas de millones de dólares anuales en costos de energía y hardware. No es de extrañar que se apresuren a adoptar Docker lo más rápido posible.
4. Ventajas de Docker
Las ventajas son más que muchas, ya que en este modo, el tiempo de despliegue en gran medida se reduce en comparación con otras soluciones (por ejemplo, la virtualización) y una solución creada en Docker es altamente portátil (se desarrolla una vez … se ejecuta en cualquier lugar).
Por ejemplo, mientras que en un sistema de virtualización tradicional tenemos un sistema operativo aislado, en el caso del Docker, más concretamente a nivel de los contenedores, tenemos recursos aislados que hacen uso de las bibliotecas del propio kernel del sistema operativo nativo.
Esto significa que conseguimos obtener un mejor rendimiento, en comparación con la virtualización, y en términos de aplicaciones más pequeñas (ya que no tenemos que llevar toda la máquina virtual a otra máquina nativa).
En un próximo tutorial voy a enseñar a instalar y utilizar la tecnología Docker. También presentaré a Docker Swarm que es una herramienta nativa de Docker, dirigida a clusters, que ofrece una interfaz de gestión que simplifica todo el proceso de gestión. Con Docker Swarm el despliegue de contenedores se simplifica, permitiendo así tener varias máquinas (en el cluster) y distribuir servicios por las mismas. Estén atentos.
Leer más aquí.