Entendiendo Docker II

Docker_(container_engine)_logoContinuando con nuestro post anterior seguiremos explorando los conceptos de esta plataforma ūüôā .

En esta ocasión estudiaremos las Docker Tools.

Qué son las Docker Tools ? 

Es un instalador para instalar rápido, fácil  y configurar nuestro entorno de desarrollo en el equipo ( PC  ). Disponible tanto para Windows y Mac, el toolbox instala Docker Client( engine ), Machine, Compose y Kitematic.

A continuación pasaremos a describirlos uno por uno.

  • Docker Client ( engine ) :¬† El n√ļcleo de la plataforma Docker,¬†es Docker engine, ligero en ejecuci√≥n, una herramienta robusta sobre la cual podemos crear y ejecutar los Docker Container, el Docker Container corre sobre linux, ¬†para crear el¬†entorno de desarrollo de¬†nuestras aplicaciones distribuidas. El¬†in-host daemon se comunica con el¬†Docker client para ejecutar los comandos,¬†de¬†crear, entregar y correr los containers.
  • Docker Compose:¬†Compose¬†es una herramienta que nos permite la definici√≥n y ejecuci√≥n de aplicaciones¬†multi-container.¬†Con Compose, ¬†utilizamos ¬†un¬†Compose file para configurar los servicios de nuestra¬†aplicaci√≥n.¬†Luego, utilizando un solo comando, podremos¬†¬†crear e iniciar todos los servicios de nuestra¬†configuraci√≥n.
  • Docker Machine: Esta herramienta nos¬†permite instalar¬†Docker Engine en virtual hosts¬†¬†y administrar los Host¬†con los comandos¬†docker-machine (que estudiaremos mas adelante).¬†Podemos¬†utilizar la Docker Machine¬†para crear Docker hosts en nuestra m√°quina¬†local ¬†Mac o Windows, en la red nuestra¬†empresa, en nuestro¬†centro de datos, o en proveedores de la nube de AWS o Digital Ocean.
  • Kitematic: Es un proyecto de c√≥digo abierto construido para simplificar y racionalizar el uso de Docker en un Mac o Windows (pr√≥ximamente) PC. Kitematic automatiza el proceso de instalaci√≥n y configuraci√≥n de Docker y proporciona una interfaz intuitiva gr√°fica de usuario (GUI) para el funcionamiento de los Docker Container.

Esto es todo por hoy en la pr√≥xima entrada estaremos hablando sobre el proceso de instalacion y configuracion de nuestro entorno, no duden en comentar cualquier duda o sugerencia¬†ūüôā

 

 

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 ūüôā ūüėČ