En esta ocasión nos toca hablar de Docker, pero ciertamente ¿Qué es Docker? Primero quisiera exponer algunos conceptos que se relacionan con esa tecnología:

  • Aislamiento.
  • Encapsulación.
  • Independencia.
  • Rapidez de ejecución.

Docker es una tecnología de código abierto que se parece a la de una máquina virtual y hace uso de los famosos “contenedores / containers”, con la ventaja de que consume menos recursos y mantiene una ejecución más rápida. Veamos algunos diagramas:

Representación del funcionamiento de una Máquina Virtual

Ahora vamos a listar algunos puntos respecto a cómo funcionan las máquinas virtuales:

  • Se necesita un sistema operativo (Host) o un Hypervisor que orqueste todos los recursos del hardware.
  • Se necesita un sistema operativo (Guest), aquí ya estamos hablando de virtualización. Este SO Guest actuará como capa para correr nuestras aplicaciones de software junto con sus correspondientes dependencias (binarios, librerías, archivos de configuración, etc).
  • Todas las dependencias de una aplicación pueden utilizarse desde cualquier otra aplicación, puesto que comparten el mismo sistema operativo.

Representación del funcionamiento de Docker

Ahora vamos a listar algunos puntos respecto a cómo funciona Docker:

  • Se necesita un sistema operativo (Host) que orqueste todos los recursos del hardware.
  • Utiliza un contenedor (capa de abstracción) que encapsulará todas las dependencias de nuestras aplicaciones (binarios, librerías, archivos de configuración, etc). Es autónomo y toma todo lo necesario para que nuestra aplicación funcione adecuadamente.
  • Varios contenedores pueden correrse en un mismo SO Host con pocos recursos de hardware, a diferencia de una máquina virtual.
  • Todas las dependencias de una aplicación solo son vistas por esa aplicación, puesto que no hay un sistema operativo de por medio.

Componentes principales de Docker

Existen dos principales componentes de Docker, los cuales son Imágenes y Contenedores

  • Imagen: Plantilla de solo lectura que sirve para crear contenedores. Para darle claridad, podemos decir que una imagen es el entorno necesario para que una determinada aplicación funcione (agrupación de recursos archivos o programas).
  • Contenedor: Son procesos aislados iniciados a partir de una imagen.

¿Dónde se pueden conseguir imágenes pre-configuradas?

Claramente nosotros podemos crear nuestras imágenes desde cero, al igual que basarnos en imágenes ya configuradas. Estas imágenes se encuentran en hub.docker.com

Todas estas imágenes son generadas por la comunidad y son completamente libres de usarse sin pago alguno.

Y a todo esto… ¿Hay alguna participación de Microsoft con Docker?

La verdad es que si, y como este blog habla principalmente de Microsoft Azure, Docker se encuentra como uno más en su lista de servicios. En la nube de Azure, lo tenemos como aplicación instalada en distribuciones de Linux y también como aplicación de escritorio para sistema operativo Windows.

DockerFile

Para no empezar imágenes desde cero, hablamos del docker hub hub.docker.com ¿cierto? Que bueno es que existan esas imágenes listas para usarse, pero que tal si a esas imágenes se les requiera hacer unos cambios para generar una nueva ¿habría que hacerlo manual todo otra vez? La verdad es que no, y para hacerlo mas automático, en docker se le llama a eso “DockerFile”.

DockerFile es un archivo de texto que mantiene una lista de comandos para ejecutarse desde docker y generar una imagen nueva de forma automatizada. Sus principales comandos son:

  • FROM: Define una imagen base a partir de la cual se creará una nueva.
  • MAINTAINER: Referencia al creador o autor de la imagen.
  • RUN: Para ejecutar comandos en la imagen antes de crearla.
  • ENV: Sirva para asignar valores a variables de entorno.
  • ADD/COPY: Para cargar archivos desde nuestro disco duro hacia la nueva imagen.
  • EXPOSE: Define el puerto para el contenedor.
  • CMD/ENTRYPOINT: Ejecución que sucederá después de crear el contenedor.

Y este es un ejemplo de como se vería un DockerFile escrito:

Tres palabras para Docker

Empaquetar => Ejecutar => Distribuir

Dicho todo lo anterior, veamos ahora como podemos utilizar Docker desde Microsoft Azure con máquina virtuales de Ubuntu:


Sígueme en Twitter @vmorenoz

¿Te gustó este artículo? Únete a Facebook en MicrosoftLand

 

Deja un comentario