Introducción a Docker

Docker es un sistema que facilita la implementación/deployment (instalación y actualización) de sistemas encapsulandolo en elementos llamados imágenes los archivos y librerias qeu lo componen y luego ejecutarlos en contenedores. Por eso el logo de Docker es una ballena (Moby Dock) con contenedores en su espalda / lomo.

Especial énfasis en sistemas por que Docker no encapsula aplicaciones con interface grafica, solo servicios. Como por ejemplo servidores de aplicaciones web, servicios web, motores de base de datos, etc.

¿Para que sirve?

Al facilitar la implementación reduce tiempo, errores y costo.

Por ejemplo podemos crear una instancia local de MongoDb con solo una línea de comando

$ docker run --name some-mongo -d mongo

Docker Hub ofrece una amplia gama de sistemas listos para implementar

¿Qué aporta Docker a nuestros sistemas?

Al momento de desarrollar una solucion Docker nos brinda los siguientes beneficios

  • Encapsulamiento
  • Aislación
  • Reutilización

Encapsulamiento

Docker nos permite encapsular aplicaciones en imágenes. Es decir meter en un solo lugar todo los archivos y librerías que el sistemas necesita para funcionar.

Después podemos crear tantas instancias de nuestra aplicación como queramos, hasta que el CPU y/o la memoria se agoten.

A cada instancia de una imagen se la denomina container (contenedor).

En IT muchas veces se tiene muchas instancias del mismo sistema y cada vez que ese sistema se actualiza hay que actualizar una por una cada instancia.

Con la evolución de los sistemas, la incorporación de la nube, dispositivos mobiles y el Internet de la cosas. Este asuntito del deployment se fue tornando un verdadero infierno. No solo por las cantidad de instalaciones si no por la diversidad de plataformas.

Aislación

Docker aísla el sistema de cambios hechos a otros contenedores.

En IT son incontables las veces en las cuales se actualiza una determinada aplicación otra deja de funcionar o funciona de forma diferente.

En el siguiente diagrama podemos ver un ejemplo donde la hay tres instancias de un sistema, utilizan la misma imagen de base.

Reutilización

Cuando se crea una imagen esta imagen puede tener una imagen base, eso nos permite EXTENDER imágenes ya creadas.

El siguiente diagrama muestra dos imágenes de las aplicaciones 1 y 2, basadas en la imagen de nodejs, bajada de https://hub.docker.com/. Cada imagen con tres instancias diferentes.

Docker Hub

Docker Hub es un repositorio abierto on line de imágenes de Docker . Allí podemos encontrar imágenes de muchos sistemas como MongoDB, MySQL, WordPress, Microsoft SQL Server (Si leyeron bien).

Esto nos permite ahorrar muchas horas de instalación y configuración.

En ambientes empresariales generalmente se implementan repositorios privados o “Docker Registry”, donde las imágenes son privadas.

Microservicios (Divide y conquista)

Cuando se habla de Docker se habla de Microservicios, este concepto moderno se basa en otro concepto mucho mas viejo : Alta cohesión bajo acoplamiento

  • Cohesión: La cohesión es la medida en la que un componente de un sistema se dedica a realizar solo la tarea para la cual fue creado, delegando las tareas complementarias a otros componentes.

  • Acoplamiento: El acoplamiento es la medida en que los cambios de un componente tiende a necesitar cambios de otro componente. Cuando un servicio web cambia su API vamos a tener que cambios los sistemas que la consumen

Con Docker esto es algo que hay que tener siempre en mente. No crear mega contenedores sino crear Micro Servicios. Dividir la aplicación en componentes.

Docker compose

Si bien un contenedor esta aislado, es muy raro que nuestros sistemas no dependan de algún otro servicio como una base de datos.

Docker compose es un programa adicional a Docker que permite la implementación de varios contenedores que interactúan entre si al mismo tiempo. Se define un archivo YAML una especie de ecosistema interconectado de contenedores que si bien interactúan entre si, ya sea compartiendo archivos o por medio de la red.

¿Nube o Local? AMBOS!!!!

Docker puede ser ejecutado localmente o en la nube, sin tener que adaptar nuestra solución para uno u otro escenario.

Cuidado la decisión de implementar Docker en la nube puede ser mas costosa pero se gana flexibilidad, nada es gratis.

Ejemplos de Docker en la nube

Me re gusto Docker ¿Cómo lo usamos?

Docker originalmente funcionaba sobre Linux, ahora tambien funcione sobre windows pero es necesario disponer de un motor de virtualización denominado Hyper-V, que no esta disponible en todas las versiones de Windows, además necesitamos un procesador que admita virtualización.

Afortunadamente Raspbian, el sistema operativo de Raspberry Pi, soporta Docker y podemos usarlo para jugar sin comprometer nuestra PC de escritorio.

IMPORTANTE: No todas las imágenes de Docker son compatibles con RPI hay que buscar aquellas que son para arquitectura ARMv7

PRÓXIMO PASO: Instalar Docker en Raspbian

Mas información

https://docs.docker.com/engine/installation/

 

Compartit en: Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInShare on TumblrEmail this to someonePrint this page

Dejá un comentario

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