jueves, 18 de noviembre de 2021

Docker

Posted by q3it on jueves, noviembre 18, 2021 in
Docker es un proyecto de código abierto que automatiza el despliegue de aplicaciones dentro de contenedores de software, proporcionando una capa adicional de abstracción y automatización de virtualización de aplicaciones en múltiples sistemas operativos. Docker utiliza características de aislamiento de recursos del kernel Linux, tales como cgroups y espacios de nombres (namespaces) para permitir que "contenedores" independientes se ejecuten dentro de una sola instancia de Linux, evitando la sobrecarga de iniciar y mantener máquinas virtuales. Ref -Wikipedia

Pero ¿a que problemas se enfrenta un desarrollador de software?

Al construir:
  • Dependencias de desarrollo.
  • Versiones de entorno de ejecución.
  • Equivalencias de entorno de desarrollo.
  • Equivalencia de entornos productivos.
  • Versiones y compatibilidades.
Al distribuir:
  • Output de build heterogéneo.
  • Acceso a servidores productivos.
  • Ejecución nativa vs Virtualizada.
  • Serveless.
Al ejecutar:
  • Dependencias de aplicación.
  • Compatiblidad de sistema operativo.
  • Disponibilidad de servicios externos.
  • Recursos de hardware.
Sabiendo todos los problemas que pueden generar las aplicaciones en sus tres paso, pensar en una solución simple es complicado, aunque hay una solución simple llamada DOCKER. Lo que promete y logra esta herramienta es poder construir, distribuir y ejecutar tu código en cualquier lado sin problemas.

Containarización VS Virtualizacón

Máquinas virtuales
Pesadas
  • En el orden de los 6Gb
  • Muchas VMs en el mismo host suelen repetirse en lo que contienen.
Administrcón costosa
  • Una VM tiene que ser administrada como cualquier otra computadora.
  • Hay que administrar la seguridad interna enter Apps
Lentas
  • Correr nuestro código en una VM implica no solo arrancar nuestras aplicaciones, sino también esperar el boot de la VM en sí.
Contenedores
No son VMs, sino que son agrupaciones de procesos que estan aislados del resto del mundo.

Versatiles
  • En el orden de Mb.
  • Tiene todas las dependencias que necesitan para funcionar correctamente.
  • Funcionan igual en cualquier lado.
Eficientes
  • Comparte archivos inmutabescon otros contenedores.
  • Solo ejecutan procesos, no un sistema operativo completo.
Aislados
  • Lo que pasa en el container, queda en el container.
  • No pueden alterar su entornode ejecuación "a menos que explicitamente se le indique lo contrario".