Vamos a iniciar un pequeño curso de uno de los temas con más apogeo en esta nueva era digital; los contenedores. Mi nombre es Juan Álvarez, soy ingeniero DevOps en T-E y estoy aquí para hacer una pequeña guía acerca de como empezar a afrontar Docker, como trabajar con este y como empezar a implementarlo.

Para empezar, quisiera primero tratar acerca del funcionamiento de máquinas virtuales, dicho esto. Comencemos.

 ¿Cómo funciona una máquina virtual?

Una máquina virtual o (VM Virtual Machine) se utiliza para emular sea un computador o servidor, cuyo objetivo es tenerlo disponible en cualquier momento y también aislado de nuestras otras VM o software. Para esto ellos funcionan bajo una arquitectura que explicaremos en el siguiente diagrama:

Como podemos observar tenemos una base de recursos físicos (Procesador, RAM, Disco duro) estos recursos son consumidos por un host (Nuestra máquina). El virtualizador está en nuestra máquina instalado, se puede denominar como un software o también como una característica, las más conocidas son VMWare, VirtualBox, Hyper-V.

Los recursos, también llamados hardware virtualizado, van a ser “ocupados” por las diferentes VM, es decir, se tienen que asignar de nuestros recursos físicos a las VM. Para dar un ejemplo, si tenemos 6 GB de RAM en el host, le podemos asignar a cada VM una porción de esta, si asignamos 2 GB, nuestro host quedaría con 4 GB disponibles para uso, lo mismo pasaría con nuestra capacidad de almacenamiento.

Una vez tengamos nuestra VM podemos almacenar, ejecutar o administrar diferentes aplicaciones, con el fin de suplir alguna necesidad en específico. Cabe aclarar que podemos tener la cantidad de VM según lo soporten nuestra infraestructura y estas pueden estar ejecutándose en paralelo, todas al mismo tiempo.

Otra característica de las máquinas virtuales, es poder guardar el estado actual de esta, crear copias de backup, clonar las máquinas, todo esto es posible gracias a las imágenes que se pueden crear a partir de estas.

Con un panorama un poco más claro, o eso espero, empezaremos a hablar sobre los contenedores.

¿Qué es un contenedor?

Un contenedor es un estándar de unidad de software, que se utiliza para albergar aplicaciones, y “compartir” la infraestructura (recursos físicos) con el host.

Vamos a imaginarnos que tenemos un barco de carga (los que tienen miles de contenedores), e imaginemos cada contenedor como una aplicación, nuestro barco es nuestra arquitectura, por ende, todas las aplicaciones comparten la infraestructura.

 

 

 

 

Si nos imaginamos ese esquema con máquinas virtuales, debemos imaginarnos un barco para cada contenedor, ya que ellos no comparten la infraestructura, sino que se debe asignar a cada barco los recursos, por lo que tendríamos millones de barcos para millones de contenedores, lo que significa inviabilidad completa por parte de recursos físicos.

¿Qué es Docker?

Docker es una tecnología de código abierto, que permite la creación y uso de contenedores de aplicaciones. En la página oficial de Docker dice lo siguiente: “Una imagen de contenedor de Docker es un paquete de software ligero, independiente y ejecutable que incluye todo lo necesario para ejecutar una aplicación: código, tiempo de ejecución, herramientas del sistema, bibliotecas y configuraciones del sistema“. Con esto, podemos inferir cuál es el objetivo de docker, ejecutar aplicaciones independientes en contenedores.

 

 ¿Cómo funciona Docker?

Docker usa el kernel de Linux y sus diferentes funciones, para desacoplar los procesos, de modo que puedan ejecutarse de manera aislada e independiente. Este es el principal objetivo de la contenerización, tener la capacidad de ejecutar procesos y/o aplicaciones por separado para utilizar mejor nuestros recursos, lo que conocemos como Infraestructura o Hardware físico.

 

 

 Para concluir Docker es muy diferente a una máquina virtual, sus objetivos son diferentes, el uso de la infraestructura también lo es, ya que docker tiene un uso más eficiente de esta.

Hasta aquí llegamos con los primeros pasos, estaremos subiendo la continuación, Docker puesto en marcha. Si tienes alguna duda, coméntalo y con gusto la solucionaremos, también puedes seguirnos en nuestras redes sociales,Facebook como Comunidad T-Evolvers, Linkedin, Twitter, o escribirnos a nuestro email de contacto.