Usos de docker

La primera vez que realicé la descarga de Docker, me sentí como la escena final de Buscando a Nemo y me pregunté  “¿y ahora que?”, alguien dígame los usos de docker.

usos de docker

Docker ¿para qué lo podemos utilizar?

Luego de haber trabajado con Docker por varios meses para distintas soluciones trataré de contestar la pregunta  en una serie de artículos para no aburrirlos y esperemos les sea de utilidad.
Para esta entrega hemos tomado la decisión de listar los usos de Docker.  En entregas posteriores analizaremos la arquitectura de este ecosistema.
 
¿Qué es una Imagen? (Docker Image):
usos de docker

Imágen Docker

Es una entidad que utiliza Docker para distribuir y almacenar componentes de software como una unidad.  Las imágenes pueden ser construidas por los usuarios y utilizan el concepto de “scaffolding” ya que una imagen siempre parte de una imagen base la cual es modificada y cada modificación queda etiquetada en capas, que a su vez pueden iniciarse (ejecutarse como contenedores) independientemente.
Una imagen es creada a partir de un archivo Dockerfile, que indica, cuál es la imagen base y qué capas adicionales tiene.  La imagen por si sola, no es un componente en ejecución, eso sucede cuando entra en ambiente de ejecución mediante el comando docker run [id imagen] y se convierte en un contenedor, que es nuestro siguiente término.
 
Contenedor(Docker container):
usos de docker

El contenedor se crea a partir de una imagen

El contenedor es la ejecución de una imagen, es una versión pequeña de una máquina virtual, pero comparte el kernel del sistema operativo host.  La imagen que se ejecuta para convertirse en un contenedor, es un grupo de archivos de solo lectura, sin embargo al ejecutarse, se le añade una pequeña capa de lectura/escritura, para los procesos que se están ejecutando.

Usos de docker básicos:

usos de docker básicos

Usos de docker básicos

Evaluar nuevas tecnologías: uno de los requisitos importantes para la adopción de un producto es su facilidad de instalación.  Docker ha venido a facilitar la evaluación de muchos productos para poder ser ejecutados sin tener que realizar una instalación que a la postre vaya a cambiar la  configuración del equipo de prueba, y es mucho más fácil y rápido que utilizando máquinas virtuales.

Algunos ejemplos de estos productos son:

  • tomcat
  • nginx
  • redis
  • postgres
  • y muchos otros solo hay que buscar  en internet “[producto] docker image”, por ejemplo “tomcat 7 docker image” o en hub.docker.com y buscar imágenes para dicha aplicación.
Entornos de desarrollo igual para todos los miembros del equipo:  Es un requisito para equipos de desarrollo efectivos, para esto se puede utilizar imágenes Docker que contienen todas las dependencias de su aplicación y se utilizan las capacidades de depuración remota para depurar dentro del contenedor de su aplicación, algunos entornos que soportan esto depuración en Docker:
Entornos de desarrollo en la nube: Existen proyectos que permiten tener su entorno de desarrollo en la nube,  y el concepto inició con máquinas virtuales, Docker ha permitido que esto sea más sencillo o en algunos casos ha hecho que el concepto de entorno de desarrollo en la  nube sea obsoleto ya que mantener el múltiples entornos en un solo equipo es mucho más sencillo y menos costoso.

Usos de docker un poco más complicados:

usos de docker más complicados

pensando, pensando, pensando

Empacar tus aplicaciones de instalación complicada: Contener en Docker aplicaciones regulares como open office, gimp y Spotify entre otras.  Jessie Frazzelle, una chica que contribuye en el desarrollo de Docker y otras tecnologías, se ha encargado de tener muchas aplicaciones para Desktop “dockerizadas”

Usos de docker futuristas, aunque algunos de ellos ya existen:

uso de docker, en el futuro

Bienvenido al futuro

Distribución de aplicaciones: Las casas de software podrían olvidar el esquema tradicional y empacar sus paquetes como contenedores, lo cual reduciría la complejidad de la instalación de sus paquetes.
Reemplazo de administradores de paquetes  del sistema operativo tales como apt(Debian, Ubuntu), yum(Fedora, Redhat), chocolatey(Windows), homebrew(MacOS):  Los manejadores de paquetes surgen debido a la complejidad de instalar componentes o aplicaciones al sistema operativo, ya que los paquetes deben coincidir con la versión del sistema operativo y lidiar con dependencias.
Docker puede ser el relevo generacional de estas tecnologías al aislar las dependencias de cada software en una imagen, y luego establecer que los comandos locales corran dentro del contenedor.
  • Para Mac existe el proyecto whalebrew que permite instalar comandos de linux en mac como imágenes de docker, el proyecto tiene varios contribuyentes haciendo la versión para windows, lo cual no debe demorar mucho ya que al final corre en Docker.
  • Para linux algunas personas han asegurado que es el potencial reemplazo de apt/yum. Uno de los esfuerzos más importantes en este camino es CoreOS que es un sistema operativo basado completamente en contenedores.
Por otro lado, hay algunos aspectos que los administradores de paquetes tienen, que todavía docker no, tales como la resolución de dependencias de los paquetes, indicar en que lugar se instalarían e información adicional sobre la instalación pero muy pronto llegaremos a eso.

Usos de docker de negocios:

uso de docker

usos de docker en negocios

Arquitectura de microservicios: En lugar de dll, jar,  o aplicaciones con instalaciones complejas, se puede utilizar Docker, para encapsular los micro servicios de su solución de negocios.  Existen muchos artículos de diferentes empresas sobre esto.
Paquetes confiables (Trusted) mediante el uso de Docker Notary:  Existe un producto del cual se oye muy poco que es Docker Notary, que consiste en un documento de firma de imágenes y verificación de las mismas, sería algo como un VeriSign para imágenes de docker.
Por el momento terminamos esta entrega que seguramente será solo un punto de partida para alimentar su curiosidad.
Share: