¿Qué es Docker?
Guía rápida para entender qué es Docker
De acuerdo a Wikipedia, Docker es:
Un proyecto de código abierto capaz de automatizar el despliegue de aplicaciones dentro de contenedores de software, proporcionándonos así una capa adicional de abstracción y automatización en el nivel de virtualización de sistema operativo sobre Linux.
Pero la verdad es que a Docker lo podemos definir desde dos perspectivas diferentes:
Para los desarrolladores
Docker viene a resolver el típico problema del "trabaja en mi máquina" pero cuando el proyecto es desplegado en producción todo falla. Si eres desarrollador sabes bien que es muy fácil que ocurra que nuestro ambiente de desarrollo difiera en algo con el ambiente de producción y nada funcione.
Gracias a las versiones de Docker Desktop, sin importar si estas sobre un sistema operativo Mac, Windows o Linux, un desarrollador puede empaquetar el codigo en un contenedor que replique exactamente el ambiente de producción, disminuyendo considerablemente la posibilidad de fallos a la hora del despliegue.
Por lo tanto, Docker para los desarrolladores es:
Una herramienta basada en tecnología de contenedores que nos permite crear distribuciones de nuestra aplicación o ecosistema idénticas al ambiente de producción, incluso estando en nuestro ambiente de desarrollo.
Para la empresa
Qué pasa cuando aparece un requerimiento del tipo:
- Necesitamos desplegar una nueva aplicación.
- Necesitamos cambiar la arquitectura de la solución que tenemos desplegada. O quizás
- Necesitamos instalar un nuevo software en el mismo servidor
Pues normalmente la solución hubiese requerido o de una mayor inversión para comprar nuevos equipos o quizás de tiempo invertido en multiples e incontables pruebas porque se desconce como la nueva instalación del software podría interactuar con el ecosistema actual. En fin. Dolores de cabeza.
Con Docker, podríamos tener una aplicación corriendo con 3 contenedores y cada uno ser un servidor Web. O por ejemplo, podríamos si ningún problema doblar el número de contenedores para soportar una segunda aplicación. Todo esto de manera más eficiente, sin muchos dolores de cabeza y mucho más económico.
Docker para las empresas es:
Una herramienta basada en tecnología de contenedores que nos permite escalar recursos de hardware para aplicaciones más rápidamente y eficientemente, permitiendo disminuir considerablemente el tiempo de despliegue de nuevas aplicaciones como el tiempo de mantenimiento y administración de los servidores y sus recursos.
Diferencias entre un Host Dedicado, una Virtual Machine y Docker
Ya que sabemos qué es Docker y como nos ayuda. Ahor deberiamos ver cual es la diferencia con respecto a las otras tecnologías.
- Host Dedicado
En el Host Dedicado, las aplicaciones corren y hacen uso de toda infraestructura del hardware y del sistema operativo. Igual manera comparten las versiones de los paquetes que alli residan. Es decir, no pueden coexistir ni aplicaciones ni paquetes de diferentes versiones. Y todas las aplicaciones comparten el sistema operativo y el hardware del Servidor.
- Virtual Machine o Máquina Virtual
En una máquina virtual, si bien es cierto que pueden coixistir diferentes sistemas operativos con sus respectivas apliciones y librerias, pues tiene un pequeño detalle: para cada máquina virtual, es necesario correr todo un sistema operativo.
Como se imaginarán el consumo de los recursos del Hardware que alberga las diferentes máquinas virtuales será inmenso, mermando la capacidad de escalado y el desempeño.
- Contenedores
La gran ventaja de los contenedores se basa en que no hay necesidad de tener todo un sistema operativo cada vez que necesitemos un nuevo contenedor. Docker usa el Sistema Operativo Host o Anfitrión. Por lo tanto, podemos tener un solo Hardware que proveerá la infraestructura y la capacidad y Docker usará, adminstrará y encapsulará los diferentes contenedores de una manera muchos más eficiente.
Si quieres profundizar más en Docker recomiendo los siguientes libros:
Mastering Docker - Russ McKendrick
Docker Deep Dive - Nigel Poulton