¿Qué es Docker?

dockerDocker es una tecnología de contenedores que permiten distribuir una aplicación en una “especie de caja” o “paquete” que contiene todas las dependencias necesarias para su funcionamiento (código, frameworks, herramientas, librerías,  configuraciones, etc…). De esta manera, se garantiza que la aplicación siempre se ejecuta de la misma forma sin importar el ambiente en el que se despliegue o el equipo donde se trabaje.

¿Os imagináis un mundo donde con un esfuerzo mínimo podéis tener exactamente la misma configuración y funcionalidad en los diferentes entornos de Desarrollo, Calidad y Producción?

Entre las características principales de estos contenedores encontramos:

  • Portabilidad: un contenedor se puede desplegar en cualquier otro sistema que soporte la tecnología. Esto supone un ahorro importante ya que no es necesario instalar en estos “otros sistemas o entornos” todas aquellas aplicaciones y dependencias que necesitéis.
  • Ligereza: en cuanto espacio en disco, los contenedores, tienen un ahorro superior al de cualquier otro sistema tradicional de virtualización. Por ejemplo, si quisiéramos instalar una VM con una imagen de Ubuntu, solo la instalación ocuparía en torno a 1Gb. En cambio, en un contenedor, en tan solo 180Mb podríais tener Ubuntu con Mono y una aplicación web funcional.
  • A diferencias de los métodos de virtualización tradicionales donde cada VM tiene una copia entera del sistema operativo, los contenedores que se ejecutan en un mismo equipo comparten el OS.

Además de los contenedores, existen otros dos componentes esenciales:

  • Imágenes: son una especie de plantillas de sistemas y sus configuraciones, que podemos utilizar como base para construir nuevos contenedores o entornos.
  • Repositorios: pueden ser públicos o privados y contienen imágenes previamente creadas por los usuarios o empresas.

Beneficios de utilizar Docker

  • Acelerar el proceso de Mantenimiento y Desarrollo: con Docker es muy fácil realizar una copia de los sistemas en producción y ejecutarlo en otro equipo, facilitando las labores de mantenimiento. De forma adicional, la instalación y preparación de los equipos de desarrollo se pueden acelerar considerablemente con el uso de esta tecnología.
  • Se eliminan las inconsistencias entre ambientes: Los contenedores empaquetan las aplicaciones con sus configuraciones y dependencias, de manera que al desplegarlas, estas funcionan tal y como fueron diseñadas, sin importar si se ejecuta en otro equipo o si es el ambiente de pruebas o producción.
  • Despliegue sencillo de aplicaciones: El hecho de que los contenedores empaquetan prácticamente cualquier aplicación junto con sus dependencias, por ejemplo un servidor MySQL, facilita el proceso de despliegue o instalación. En un escenario tradicional el cliente tendría que instalar y configurar MySQL y luego vuestra aplicación, pero con Docker al ejecutar el contenedor ya estaría todo funcionando.
  • DevOps: Relacionado con los 3 puntos previos, el empaquetado de las aplicaciones en contenedores viene como anillo al dedo para ayudar y soportar la adopción de DevOps en las organizaciones, ya que tanto los desarrolladores como los administradores de sistema pueden probar aplicaciones en un entorno seguro y exactamente igual en todos los casos.
  • Throwable Sandboxes: realizar una prueba de concepto, por ejemplo con nuevas tecnologías, es muy sencillo. Con los contenedores puedes crear “sandboxes” ligeros, sin necesidad de instalar una máquina virtual completa y luego descartarlos una vez cumplido el objetivo.
  • Microservicios: ahora que están de moda los microservicios, los contenedores proveen la velocidad de despliegue y aislamiento ideales para dicha arquitectura.

Ejemplo .Net

OWIN.Docker es una aplicación sencilla que publica una WebAPI desarrollada en .Net y que adicionalmente se puede ejecutar en Docker siguiendo las instrucciones descritas en el fichero Readme.md

Es muy sencillo probar Docker en Microsoft Azure. Para ello solo debéis crear una VM basada en la imagen Docker on Ubuntu Server

Referencias:

Carlos-MendibleCarlos Mendible con más de 14 años de experiencia diseñando e implementado soluciones de software, comenzó su carrera en Venezuela, donde en 1999 obtuvo su primera certificación Microsoft. Actualmente está certificado como CISA, ITILF, MCSD, MCTS y MCP. Trabaja desde 2012 como Arquitecto Senior de Soluciones Microsoft en Sogeti España colaborando también como evangelista tecnológico, formador e ingeniero de pre-venta.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s