Reto de la ballena azul - #1 Aprende el estado actual de Docker

Joel H. Gomez Paredes
codecrafters
Published in
4 min readJul 19, 2017
No es el logo de docker pero me pareció chistoso XD

Docker mas que una herramienta o tecnología ha evolucionado hasta convertirse en una plataforma y aun más que eso ahora es la plataforma líder en contenedores.

Obtenida de docker.hub.com

Hace mas de 2 años hice un pequeño post acerca de Docker detallando algunos conceptos de esta tecnología.

A pesar de que han pasado 2 años los conceptos no han cambiado.

Containers

Un contenedor es una pieza software que se ejecuta en un entorno aislado de otros procesos en el sistema operativo que lo contiene.

Obtenida de docker.com

A diferencia de una virtual machine no emula un todo sistema operativo, sino que aprovecha las librerías y kernel del sistema huésped para funcionar.

Cabe aclarar que los containers son procesos que usan imágenes sistemas operativos que son mas ligeras que las tradicionales ya que no te preocupas por el kernel o el hardware.

Empezar a usar containers no implica que vas cambiar la forma en como programas ( o quizás si), el cambio más radical que pudieras encontrarte es el hacerte a la idea de que la tarea del contenedor es únicamente correr.

Como mencione anteriormente, cada pieza de software debe estar aislada y por pieza de software me refiero a : bases de datos, servidores, servicios, etc.

Y te preguntarás, ¿cómo conecto mi aplicación web con mi base de datos?

La forma de interactuar de estos con el mundo exterior es re-dirigiendo puertos del container al sistema host o hacer referencias a carpetas o archivos del sistema host(volumen).

Las ventaja de incluir containers en tu procese de desarrollo son:

  • Adiós a los problemas de entornos de desarrollo y choques de dependencias.
  • Mac, Linux o Windows no importa, puedes instalar Docker
  • Fácil instalación de software de terceros (ya que solo debes levantar el contenedor y configurar).
  • Puedes crear imágenes custom para usar en tus containers
  • El stack no importa, puedes agregar node, go, ruby o lo que quieras en tu container.
  • Empresas como Amazon, Google, Microsoft, digital ocean, etc. Ya ofrecen servicios para hacer uso de containers en la nube.

Una vez que te preparas psicológicamente para adaptar tu mente, código y procesos al uso de containers todo estará bien.

Imágenes

Para poder correr un container este necesita una imagen base de un sistema operativo pudiera ser : debian, ubuntu, etc. Estas pueden obtenerse de un repositorio de imágenes como Docker Hub o del Docker Store(en el store podemos comercializar las imágenes que subimos).

Obtenida de docker.com

Si has usado Github esto es básicamente lo mismo pero para imágenes, es una plataforma que brinda el servicio para tener un control de versiones de las imágenes que generas con Docker, webhooks, integración con herramientas de integración continua, automatización de generación de imágenes al generar una nueva versión cambiando tu Dockerfile(es el archivo que describe como esta construida la imagen).

Herramientas

Docker Compose

Es una herramienta para describir, conectar y correr múltiples contenedores. Una característica genial de esta herramienta es que podemos definir nuestra arquitectura en un archivo y como cada elemento se conecta entre si.

Docker Swarm

Es una herramienta que nos permite crear, clusterizar contenedores, esto permite que podamos escalar nuestras aplicaciones y administrar los contenedores en nuestra arquitectura. Una alternativa a esta es Kubernetes.

Conclusión

No abarcamos muchas herramientas y otros conceptos porque en otros posts exploraremos de Docker y veremos como levantar aplicaciones con X lenguaje en contenedor, crear nuestras propias imágenes y agregarlas al Docker Hub, usar Docker Compose, administrar y monitorear containers, etc. Lo importante es que sepas que Docker existe, los elementos principales que nos describen como funciona y que puedo hacer con el.

--

--

Joel H. Gomez Paredes
codecrafters

Frontend Developer at Platzi, Google Developer Expert in Web Technologies And Google Maps Platform, A Reverse Developer & Fullsnack JS Developer