Qué es Docker y cómo es relevante para su empresa
La situación en el pasado (y, a veces, la situación presente)
Antes de hablar sobre Docker, veamos la forma tradicional de virtualización, los problemas que la mayoría de los desarrolladores de aplicaciones solían enfrentar, y cómo Docker resuelve esos problemas.
Por ejemplo, en el pasado (e incluso ahora en algunos lugares), si un desarrollador quería un entorno virtualizado de una máquina Linux para ejecutar o probar su aplicación, debía instalar y configurar un hipervisor en la parte superior de su infraestructura existente. Eso se hacía en la siguiente forma:
- Paso 1: el desarrollador activaba una nueva máquina virtual utilizando un hipervisor, instalaba Linux (o cualquier otro sistema operativo) en ella, y luego todos los binarios y bibliotecas.
- Paso 2: después de todas estas instalaciones y configuraciones, se podía ejecutar la aplicación en un entorno Linux.
Usar este enfoque para ejecutar aplicaciones tiene algunos inconvenientes, por ejemplo:
- Se debe ejecutar una máquina virtual completamente nueva, instalar un sistema operativo y, a veces, hasta su licencia solo para ejecutar la aplicación
- Cada vez que se quiera ejecutar, es necesario configurar e instalar todos los binarios y bibliotecas
- Se produce una gran sobrecarga en el equipo o los servidores
- Aunque son portátiles y están completamente aisladas de su máquina host, las máquinas virtuales ocupan un gran espacio de almacenamiento
Otro problema común que enfrentan la mayoría de los administradores de configuración es la frase: «¡funciona en mi máquina pero no en la tuya!».
¿Qué es Docker?
Docker tiene varias definiciones, pero principalmente es una plataforma abierta para desarrollar, enviar y ejecutar aplicaciones.
Para explicar en detalle, dividimos la descripción de Docker en dos partes: la plataforma Docker y la definición de contenedor.
La plataforma Docker
En primer lugar, Docker proporciona la capacidad de empaquetar y ejecutar una aplicación en un entorno aislado llamado contenedor. El aislamiento y la seguridad permiten ejecutar muchos contenedores simultáneamente en un host determinado. Ya que los contenedores son livianos, no necesitan la carga adicional de un hipervisor ni de un sistema operativo, sino que se ejecutan directamente dentro del kernel de la máquina host. Esto significa que puede ejecutar más contenedores en una combinación de hardware determinado, a diferencia de una máquina virtual. Incluso puede ejecutar contenedores Docker en hosts que en realidad son máquinas virtuales.
Docker proporciona herramientas y una plataforma para administrar el ciclo de vida de sus contenedores. Por ejemplo, uno puede desarrollar una aplicación y sus componentes de soporte usando contenedores. El contenedor se convierte en la unidad para distribuir y probar la aplicación. Cuando esté listo, implemente la aplicación en su entorno de producción como un contenedor o un servicio orquestado. Esto funciona de la misma forma si su entorno de producción es un centro de datos local, un proveedor de la nube o un híbrido entre los dos.
¿Qué es un contenedor?
En la vida real, si un país quiere exportar un producto a otro país, debe almacenarlo en un contenedor y luego enviarlo por carretera o por mar a otro país. Dentro de los contenedores, cada producto se sitúa de manera tal que no se dañe y se transporte de forma segura, independientemente de dónde se mueva el contenedor.
La misma analogía se aplica a Docker para ejecutar y mantener aplicaciones distribuidas. La plataforma encapsula su aplicación en un contenedor con todos los binarios, librerías y dependencias, y la aísla completamente de entornos externos, independientemente de dónde se esté ejecutando.²
Los principales beneficios de Docker son:
- Permite separar las aplicaciones de su infraestructura para que pueda entregar software rápidamente
- Puede administrar su infraestructura de la misma forma que administra sus aplicaciones
- Puede reducir significativamente la demora entre escribir código y ejecutarlo en producción al aprovechar las metodologías de Docker para enviar, probar y desplegar códigos rápidamente.³
¿Para qué puedo usar Docker?
Para entregar de manera rápida y consistente sus aplicaciones, por ejemplo:
- Docker optimiza el ciclo de vida del desarrollo al permitir que los desarrolladores trabajen en entornos estandarizados utilizando contenedores locales que proporcionan sus aplicaciones y servicios. Los contenedores son excelentes para flujos de trabajo de integración continua y entrega continua (CI / CD).
- Despliegue receptivo y escalado: La plataforma basada en contenedores de Docker permite cargas de trabajo altamente portátiles. Los contenedores Docker se pueden ejecutar en la computadora portátil local de un desarrollador, en máquinas físicas o virtuales en un centro de datos, en proveedores de la nube o en una combinación de entornos.
- La portabilidad de Docker y su naturaleza liviana también facilitan la administración dinámica de cargas de trabajo, ampliando o eliminando aplicaciones y servicios según las necesidades del negocio, casi en tiempo real.
- Docker es liviano y rápido: Proporciona una alternativa viable y rentable a las máquinas virtuales basadas en hipervisor, por lo que puede utilizar una mayor capacidad de cómputo para alcanzar sus objetivos comerciales. Docker es perfecto para entornos de alta densidad y para implementaciones pequeñas y medianas donde necesita hacer más con menos recursos.⁴
Estadísticas de Docker
Si aún no está convencido de los beneficios de Docker, a continuación presentamos estadísticas y ejemplos:⁵
New Stack puede ayudar a su empresa a analizar, evaluar, crear la infraestructura y llevarla a ocupar la tecnología de Docker. Póngase en contacto con nosotros hoy y programe una reunión, ¡y demos el siguiente paso en la digitalización de su empresa!
Fuentes:
2-4.https://docs.docker.com/engine/docker-overview/#what-can-i-use-docker-for