Entendiendo Docker I

Docker_(container_engine)_logo

Entendiendo Docker.

Para nosotros  los developers / estudiantes Docker trae un nuevo concepto al ambiente de desarrollo, en esta entrada trataremos de exponer, cuál es el concepto de Docker para entenderlo en su totalidad a lo que al developer se refiere. Esta es la primera entrada de una serie sobre el tema.

Que es Docker ?

Docker es una plataforma abierta ( Open Source ) de creación de aplicaciones, que puede dar a cualquier desarrollador  un impulso en la productividad.

De seguro  estarás diciendo si, si, si, pero que exactamente es Docker ?

Pues bien, Docker nos facilita el proceso de elaboración de nuestro software proveyéndonos  de una plataforma ligera, de código abierto y segura , logrando así simplificar la elaboración de nuestro software, mejorando el tiempo de  entrega  y permitiéndonos correr (debug) nuestro software en diferentes entornos !  muy chulo No ! ?

Esta plataforma corre de forma nativa en Linux y windows server , en Windows y Mac corren sobre una Máquina virtual.

Que es una Docker image and Docker container  ?

Docker image: es un template de solo lectura que contiene un sistema de archivo usado para compartir archivos en común y crear la instancia que correrá el Docker container. Un ejemplo de una image es Ubuntu con Nodejs mas el codigo  esto es lo que se usará para crear la instancia en nuestro container.

Docker container:  un contenedor de transporte aislado y seguro para nuestro software, este es creado a partir de la Docker image que se ejecuta ( creando una instancia ), dicho container puede ser iniciado, detenido, movido y eliminado.

Docker Container VS Máquinas Virtuales.

Si estamos desarrollando una aplicación que necesita de cierto entorno de desarrollo tenemos dos opciones usar Docker Container o Máquinas Virtuales.

Si optamos por la segunda opción nos encontraremos con el siguiente escenario:

  • Un sistema operativo host (anfitrión).
  •  Un virtualizador.
  • Un sistema operativo invitado ( el que se va a virtualizar ).
  • Los binarios y las librerías .
  • La aplicación a desarrollar.

ahora imaginemos que estamos desarrollando dos aplicaciones al mismo tiempo que el entorno nos entra en conflicto, pues ya tendríamos que crear otra máquina virtual para la segunda aplicación, imaginense la cantidad de recursos que nos consumirá utilizar dos máquinas virtuales al mismo tiempo, además nos restaría productividad, no solo esto sino que también necesitamos de un administrador de sistemas para mantener las máquinas virtuales o disponer de tiempo para hacerlo nosotros.

Ahora bien si optamos por la primera opción Docker container  nos encontraremos con el siguiente escenario: 

  • Un sistema operativo host (anfitrión).
  •  El Docker Engine.
  • Los binarios y las librerías .
  • La aplicación a desarrollar.

Las ventajas que nos ofrecen los container de Docker, es que  no se requiere un hipervisor para alojar y mantener las máquinas virtuales, sin embargo, el motor acoplable ( Docker Engine)  es una tecnología de virtualización de contenedores  ligera (lightweight) que se ejecuta en el sistema operativo anfitrión, y los contenedores Docker se puede iniciar muy rápidamente.

Aunque las máquinas virtuales y contenedores Docker ambos ofrecen el aislamiento de recursos, los contenedores Docker comparten núcleo y contenedores apropiados o bibliotecas del sistema operativo con otros contenedores acoplables. El resultado es una implementación más rápida, menos gastos generales, la migración más fácil, más rápido inicio .

El motor de Docker maneja parámetros de virtualización tales como la asignación del sistema de archivos cuando se inicia la aplicación. Para ejecutar correctamente una aplicación en una máquina virtual, el hipervisor necesita importar por primera vez la máquina virtual y luego ponerlo en marcha; esto lleva tiempo !

Por último destacaremos los beneficios que aporta Docker al Developer

Beneficios:

  • Acelera la incorporación desarrolladores a la elaboración del Software.
  •  Elimina conflicto con otras aplicaciones.
  • Entorno de desarrollo consistente.
  • Entrega del software más rapido.

Si tienes alguna duda o quieres aportar algo a los tópicos tratados no dudes en comentar ! hasta la próxima 🙂 😉

 

 

 

Comments

Dejar una contestacion

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *