Docker: qué es y por qué te interesa aplicarlo en tu empresa
*Con la colaboración de José Manuel Blanco.
Agilidad, flexibilidad, escalabilidad… Todos esos términos se pueden atribuir a Docker.
En este post te explicamos lo que necesitas saber sobre Docker y por qué te interesa ejecutarlo en tu corporación.
Qué es Docker
Docker es una tecnología de encapsulación de aplicaciones, como contenedores de software, para distribuir sin problemas de dependencias ni de incompatibilidades en diversos sistemas operativos (como Windows o Linux) y en entornos locales o cloud como Azure o AWS. Así, los distintos ficheros que conforman nuestras aplicaciones, sus dependencias… se transforman en una imagen Docker, lista para ser desplegada en infinidad de sistemas.
Adicionalmente, el paquete de Docker nos permite crear, ejecutar y, si es necesario, actualizar y parar el funcionamiento de los contenedores.
Detrás de Docker se encuentra una empresa homónima que trabaja junto a Linux, Microsoft y proveedores en la nube. En un entorno en el que cada vez más organizaciones apuestan por entornos de desarrollo cloud, Docker aumenta la eficacia de trabajo.
Cómo funciona
Partiremos del concepto de imagen Docker. Una imagen define todo lo necesario para ejecutar una aplicación: código, runtime, librería o configuración.
Existen infinidad de imágenes Docker ya listas para usarse, en repositorios tanto públicos como privados. Entre los primeros destaca Docker Hub como el mayor repositorio público del mundo, con más de 100.000 imágenes. ¿Necesitas instalar una base de datos, un sistema de monitorización o una caché? Aquí encontrarás sus imágenes oficiales para conseguirlo, un histórico de sus distintas versiones y unas notas para ayudarte.
Esto mismo podremos conseguirlo con las aplicaciones de nuestra compañía, publicando su imagen en un repositorio público de libre acceso, o privado únicamente para nuestros empleados y clientes.
Más allá de la definición que contiene una imagen Docker, el siguiente concepto clave es el de contenedor Docker. Un contenedor es simplemente la ejecución de una imagen. Una misma imagen podrá ejecutarse múltiples veces creándose así distintos contenedores, potencialmente cada uno de ellos con pequeñas diferencias de configuración, si así lo permitiera la imagen y se especificase al lanzar el contenedor.
Al ser un estándar de facto de contenerización, nuestras aplicaciones podrán desplegarse a partir de sus imágenes Docker en una enorme variedad de opciones: en onpremise o en nube, de manera aislada o junto con otros contenedores, usando simplemente el entorno de ejecución que nos provee Docker o en sistema más complejos y avanzados como Kubernetes.
¿Por qué tu empresa debería usar Docker?
Al igual que ya sucedía con las máquinas virtuales, Docker nos permite ejecutar la misma aplicación en distintas máquinas de distinta naturaleza. Pero frente a estas, los contenedores son más pequeños y con despliegues más rápidos.
Gracias a Docker, unas operaciones son más sencillas de hacer que con otras herramientas. Por ejemplo, enviar software a mayor velocidad o simplificar la ejecución de código en varios servidores. También, transferir aplicaciones. En definitiva, se entrega o ejecuta trabajo con mayor rapidez y se agilizan tareas. Por esto, entre las características de Docker que más resaltan se encuentran su flexibilidad.
Por otra parte, gracias a Docker, es posible unificar los entornos de nubes públicas y privadas, con el fin de mejorar la productividad y el rendimiento.
En Plain Concepts, nuestro equipo de inteligencia artificial usa mucho esta tecnología para cargar sus modelos en Azure. Si quieres saber más sobre sus posibilidades, nuestro compañero Luis Fraile habla en el siguiente vídeo sobre pruebas funcionales en aplicaciones de .NET Core con la ayuda de Docker, tanto en sistemas locales como en Azure Pipelines.
Desde hace bastantes años venimos apostando por la contenerización de aplicaciones como parte de nuestra entrega de valor, tanto en las aplicaciones que desarrollamos para nuestros clientes como al ayudar a llegar a este punto en los distintos acompañamientos y consultorías de modernización de soluciones que ofrecemos. Brindamos asimismo nuestra experiencia para desplegar estas imágenes en infinidad de sistemas; con ello, buscamos maximizar el valor a nuestros clientes a través de despliegues rápidos y seguros y aprovechando todas las posibilidades de escalabilidad y resiliencia existentes.