Que es Docker Container

image

Si eres desarrollador de aplicaciones web, te identificarás con el habitual problema en el que decimos.. “Mierda, en mi compu si funciona!!” y es que muchas veces los diferentes paquetes que instalamos en nuestros sistemas alteran ligeramente las versiones de algunas librerías y de eso consecuentemente los problemas, incluso en ambientes llamados espejos, donde se tienen máquinas para pruebas, pre-producción y producción, nuestras aplicaciones pueden llegar a variar en funcionamiento.

Y esto no es algo alejado de la realidad, ya que aunque se tenga todo documentado, hacer que funcione una aplicación implica no sólo tener el mismo sistema operativo y hardware equiparable, sino también instalar y configurar todas las dependencias que haya (bibliotecas de terceros, bases de datos…), y a veces es una tarea pesada y propensa a errores.

Por tal motivo la virtualización es una buena solución, donde una máquina virtual puede clonarse y tener exactamente las mismas condiciones en todos los entornos. Lo malo de esta solución es que debemos desplegar el sistema operativo completo, es algo muy pesado que implica mover grandes archivos, cualquier actualización implica cambio completo de la máquina, etc…

Así es que para dar respuesta a estos problemas nace Docker, cuyo objetivo es permitirte la creación paquetes estándar pensados para despliegue llamados “contenedores” que incluyen todo lo necesario para que una aplicación funcione (dependencias, servicios, etc…) y que se aíslan del sistema subyacente para lograr que siempre funcionen exactamente igual.

Es decir, si tenemos una aplicación web, por ejemplo, nuestro contendor Docker contiene un sistema de archivos virtual en el que se incluyen, por ejemplo:

  • Nuestra aplicación
  • El runtime de la plataforma que estemos utilizando (Java, .NET…)
  • Dependencias de todo tipo (bibliotecas, herramientas de línea de comandos…)
  • Servidores (Apache, MySQL…)
  • Herramientas del sistema
    Etc…

En realidad cualquier cosa que se pueda instalar en el sistema operativo, puede estar contenida en Docker, pero al contrario que una máquina virtual no es necesario mover un disco con el sistema completo, ni tampoco compartir el hardware. Se ejecuta directamente sobre el sistema operativo, no es una virtualización, es por decirlo de forma simple, un entorno aislado de ejecución en un host.

Las ventajas de utilizar Dock son muchas por ej.

  • Mucho más ligero (en “peso”) que una máquina virtual
  • Fácil de actualizarFácil de desplegar
  • Ofrece mucho más rendimiento que una máquina virtual. Esto implica que en un mismo servidor pueden ejecutarse muchas más aplicaciones que las equivalentes si fueran máquinas virtuales, algo especialmente útil para empresas de Cloud computing.
  • Es muy seguro porque aísla la ejecución de aplicaciones, de modo que no pueden interferir entre ellas.
  • Permite realizar pruebas mucho más reales en cuanto al entorno en el que se van a ejecutar las aplicaciones reales, mejorando la calidad.

En general, el uso de Docker nos garantiza de cierta forma que nuestros despliegues se hagan sobre ambientes controlados, incluso existen proyectos como el open container project donde muchas compañías están aportando ideas para una mejor especificación de la tecnología y de esta forma compartir imágenes entre si, con la idea de que sus usuarios puedan realizar importación e exportación de sus contenedores.

Co-fundador de Qbit Mexhico, usuario de linux, Developer en tecnologías web.. Nicaragüense, centro en basketball, primer centro en rugby y pintor los fines de semana. Ortögrafo y ambientalista psicológico (de escritorio).. ese soy yo!

Si te ha servido compártelo y difunde nuestro blog..

Facebook Twitter LinkedIn Google+ Flickr YouTube Skype 

Compartir en...Tweet about this on TwitterPin on Pinterest0Share on LinkedIn0Share on Google+0Share on Facebook0