Docker es un proyecto de código abierto con el que fácilmente podremos crear "contenedores". Estos contenedores de Docker podríamos definirlos como máquinas virtuales ligeras, menos exigentes con los chips y memorias de los equipos donde se ejecutarán.
Docker utiliza una arquitectura cliente - servidor, el “Docker daemon” es el encargado de realizar el trabajo "construir, ejecutar y distribuir" los contenedores, el cliente permite interactuar con el servidor “Docker daemon”
Para comprender docker, vamos a definir los tres componentes que lo conforman:
- Docker images.
- Docker registries.
- Docker containers.
Las imágenes docker son una especie de plantillas de solo lectura, las cuales contiene la información necesaria para ejecutar un contendedor. Una imagen puede tener el sistema
operativo Ubuntu, un servidor web apache con módulos de php, y una base de datos mysql.
Cada imagen inicia desde una imagen base, por ejemplo "Ubuntu image", "Fedora image". A esta imagen base se agrega otros componentes ejemplo una base de datos NoSQL "mongodb", node.js, etc.
En términos de programación son las clases.
Un contenedor es creado a partir de una imagen, estos pueden ser ejecutados, detenidos, iniciados, eliminados. Contiene todo lo necesario para que una aplicación pueda ejecutarse “Sistema operativo, aplicaciones, archivos, metadatos, procesos, etc.”
Cada contenedor es una plataforma aislada y segura, son autosuficientes (aunque pueden depender de otros contenedores, por ejemplo, un wordpress que necesita una base de datos mysql) no necesitando nada más que la imagen del contenedor para que funcionen los servicios que ofrece.
En términos de programación son las instancias “objetos” de las clases.
Los registros docker son repositorios que contienen las imágenes de los cuales se pueden descargar, agregar o actualizar. Estos permiten compartir las imágenes. Estos pueden ser públicos o privados.