Qué es Docker y por qué usarlo en IoT

docker iot

En esta oportunidad voy a contarte sobre una tecnología de despliegue de aplicaciones que se utiliza masivamente en la nube. Se trata de Docker, un gestor de contenedores que es ideal para desplegar soluciones de IoT.

Hace ya un tiempo que he empezado a utilizar esta tecnología y la verdad es que me fascina. Es muy sorprendente lo fácil que resulta el despliegue de aplicaciones usando Docker (aunque como siempre, primero hay que estudiar, practicar y aprender 😉 ).

Qué es Docker y para qué sirve

¿Qué es un gestor de contenedores?, o en para empezar, ¿qué es un contenedor?.

Comencemos por ver para qué sirve un contenedor.

Imaginemos que tenemos una máquina virtual con algún sistema operativo Linux (cualquiera de las distros más conocidas sirven para tal fin).

De ahora en más, a esta máquina virtual la llamaremos host, porque servirá para alojar a Docker y sus contenedores.

Ahora bien, imaginemos que deseamos correr varias aplicaciones (bases de datos, servidores web, aplicaciones propias, etc), que tienen diferentes características y requieren distintos paquetes de software y librerías.

Si ya has administrado un servidor donde corren diferentes aplicaciones, sabrás de los problemas que se pueden generar por distintos motivos. Uno de ellos puede ser el uso de distintas versiones de los mismos paquetes de software.

Por ejemplo, una aplicación web legada que no ha tenido actualizaciones puede usar PHP 7.2 y otra aplicación más nueva puede necesitar PHP 7.4. Gestionar esto en un mismo servidor puede ser un dolor de cabeza cada vez que es necesario actualizar alguna de estas aplicaciones.

El uso de contenedores permite correr aplicaciones de manera totalmente aislada entre ellas en el mismo host.

Esto permite instalar, eliminar y actualizar las aplicaciones sin que se produzcan cambios que puedan afectar al resto de las aplicaciones.

¿Cómo se logra esto?

El concepto de contenedor se logra separando el kernel del sistema operativo del resto de los paquetes de software. En el host se corre el kernel y mediante Docker se gestionan los contenedores, que contienen todo el software necesario para ejecutar las aplicaciones.

De este modo el kernel es el mismo para todas las aplicaciones, pero cada contenedor aloja de manera independiente sus propios paquetes de software.

Así, es posible levantar y bajar aplicaciones en cuestión de segundos sin interferir en absoluto con el resto del software. 

business cargo cargo container city
Photo by Pixabay on Pexels.com

¿Cómo se crean los contenedores?

Para crear contenedores se utilizan imágenes. Estas imágenes son archivos de solo lectura que contienen todos los paquetes de software necesarios para ejecutar la aplicación.

Cada vez que se crea un contenedor se usa esta imagen como si fuera una plantilla.

A su vez, las imágenes se pueden crear a través de Dockerfiles, que son archivos mediante los cuales Docker ejecuta una serie de órdenes escritas en ese archivo para crear la nueva imagen. Esto es útil cuando se desea crear una imagen Docker de una aplicación desarrollada por nosotros mismos.

Por otro lado, lo más común es utilizar imágenes ya creadas, que se encuentran en el hub online de Docker. Para obtener la imagen solo es necesario bajarla desde el Docker hub mediante un comando.

Para actualizar el software, solo es necesario bajar la última versión de la imagen y crear el contenedor a partir de ella. Fácil, ¿no?.

Comunicaciones

Los contenedores pueden comunicarse con el exterior a través de un mapeo de puertos que realiza Docker o usando directamente la interfaz del host. Esta última opción tiene la dificultad de que hay que usar un puerto diferente para cada aplicación.

También puede haber contenedores que no se comuniquen con el exterior, pero sí lo hagan con otros contenedores.

Y finalmente, puede haber aplicaciones que no requieran transferir información mediante la red.

Uso de Docker en IoT

Si ya has visto alguno de mis videos donde hablo sobre implementar un servidor IoT, sabrás que una solución de IoT requiere de distintas aplicaciones que interactúan entre sí. Por este motivo, es común que las plataformas IoT utilicen la dockerización para llevar adelante la implementación.

A propósito, aquí te dejo los artículos y videos donde hablo sobre plataformas IoT

Cómo elegir una plataforma IoT

Ventajas de tener tu propia plataforma IoT

Qué necesitas para crear tu plataforma IoT

Qué software utilizar en tu plataforma IoT

3 plataformas Open Source para IoT

Pero aun si no vas a usar una plataforma IoT de terceros y deseas armar tu propia plataforma IoT, la dockerización te permitirá gestionar todo el software de una manera mucho más fácil y eficiente.

Además de todo esto, Docker CE (Community Edition) es Open Source y se puede usar de manera gratuita.

Vale aclarar que este tema es mucho más amplio de lo que describo en este artículo. Se puede, por ejemplo, tener contenedores corriendo en distintos hosts o en clusters y gestionar todos los contenedores de manera centralizada con un orquestador (Kubernetes), que administrará los recursos de acuerdo al uso, disponibilidad, etc.

Como ves, la complejidad del sistema puede ser infinita, pero aquí solo quería dar una primera aproximación al tema, para mostrar la utilidad que puede tener Docker aun en sistemas IoT de un solo host.

Si te gustó el artículo te invito a compartirlo con tus contactos y te leo en los comentarios.

1 comentario en «Qué es Docker y por qué usarlo en IoT»

  1. Pingback: Una plataforma IoT Open Source lista para usar - Tu fuente experta en IoT

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.