Introducción a Docker
Que es Docker?
Es una plataforma abierta que permite desarrollar, desplegar y ejecutar aplicaciones de manera rápida y consistente utilizando la tecnología de containers entre otras herramientas para gestionar y desplegar aplicaciones.
Los containers son una característica del kernel que permite crear un entorno aislado, encapsulando procesos, con interfaz de red y sistema de archivos propio, lo que es comparable a una máquina virtual pero de naturaleza mucho más liviana y sin la carda de un hypervisor.
Ventajas
- En el ámbito del desarrollo permite aislar el stack de tecnologías y sus versiones que se usa en un proyecto, por lo que al momento de trabajar con varios proyectos no habrá conflicto entre versiones.
- Evita tener distintas versiones de la misma tecnología en el equipo de desarrollo al crearse un container y distribuirlo en el equipo
Poca fricción de nuevos integrantes del equipo, solo necesita instalar docker y ejecutar el container. - Al desplegar el container en el servidor, se evita el típico “pero si me funciona en local! D:”
- Idealmente debería haber solo un elemento del stack por container, lo cual permite aislar y escalar servicios fácilmente según se necesite.
Arquitectura
Docker utiliza una arquitectura de cliente-servidor. El docker client habla con el docker daemon el que tiene la tarea de construir, ejecutar y distribuir containers lo cual permite que un docker client pueda ordenarle tareas a docker daemons en local como remotos.
Componentes
- Imágenes: es un template de solo lectura que podría tener Ubuntu y Apache instalado, y son usados para crear containers.
- Registro: Almacenamiento público o privado usado para subir y descargar imágenes con el fin de ser distribuidas.
- Containers: Un container se crea a partir de una imagen y éste cuenta con todos los elementos que una aplicación necesita para ser ejecutada, es un ambiente aislado y seguro.
Como funciona?
- Puedes crear imágenes para contener aplicaciones
- Crear containers para ejecutarlas
- Compartir tus imágenes en Docker hub o en tu propio registro
Como funcionan las imágenes
Una imagen sirve de template para el sistema de archivos de un container. Una imagen está formada por una serie de capas utilizando union file system, teniendo siempre una imagen base (por ejemplo ubuntu) y agregándose modificaciones en forma de capas, cuya ventaja es que al efectuar un cambio en una imagen, no es necesario construirla desde cero y distribuirla completa, sino, se agrega una capa con la modificación y se distribuye solo dicha modificación.
Como funcionan los containers
Consiste de un sistema operativo, archivos de usuario y meta-data, es hecho a partir de una imagen donde se define lo que contiene el container y que proceso ejecuta al lanzarse. Si bien la imagen es solo lectura, cuando se ejecuta un container, se agrega una capa lectura/escritura sobre la imagen en la cual la aplicación se puede ejecutar.