La imagen
es un archivo que contiene todas las librerías, dependencias y configuraciones necesarias para ejecutar un entorno aislado con sus propios servicios y procesos. Sirve como base para crear uno o varios contenedores, los cuales obtendrán configuraciones de red y direcciones IP independientes al momento de su creación.
Notas
No se emula hardware, sino únicamente servicios y software (como el sistema de archivos, el sistema operativo y los servicios). Por lo tanto, un contenedor no es una máquina virtual, aunque tenga su propia IP. Sin embargo, puede considerarse como un dispositivo o nodo independiente dentro de la red.
El contenedor
El contenedor es una capa de lectura y escritura que se añade a una imagen, permitiendo interactuar con ella y ponerla en ejecución.
Imagen obtenida de https://iesgn.github.io/curso_docker_2021/sesion2/organizacion.html
Notas
El contenedor se crea a partir de una imagen y siempre dependerá de ella. Esto significa que no podremos eliminar la imagen mientras exista un contenedor asociado a ella.
Notas
El contenedor almacena los cambios realizados sobre la imagen, funcionando como pequeños incrementos sobre un archivo base. Este enfoque lo convierte en un sistema muy robusto, ágil y ligero.
Contenedor e imagen
La unión hace la fuerza
El funcionamiento de Docker se basa en crear un contenedor a partir de una imagen, por lo que los conceptos de imagen y contenedor están intrínsecamente relacionados (no se pueden usar de manera individual).
Nota
Todo contenedor siempre dependerá de una única imagen.
Nota
Una imagen puede ser la base de uno o muchos contenedores.
Cada contenedor es un sistema independiente de los demás, con su propia IP y un entorno completamente aislado.
Compentes de la arqutectura docker
Descripcion de la imagen
Cliente de Docker:
Docker CLI
permite ejecutar comandos para interactuar con Docker,
Docker Compose
** se utiliza para definir y manejar aplicaciones de múltiples contenedores.
Docker Engine
Envía comandos al motor de Docker para su ejecución.
Docker Engine:
Compuesta por
Docker Engine API
y
Docker daemon
,los cuales son componentes fundamentales del motor de Docker.
*
Docker Engine API
es la interfaz de comunicación entre el cliente y el motor.
*
Docker daemon
gestiona los contenedores y las imágenes.
Podemos ver en la imagen, áreas para
imágenes
y
contenedores
, donde queda explícito que Docker Engine se encarga de manejar tanto las imágenes como la ejecución de los contenedores.
Container Runtime
es el entorno en el que los contenedores se ejecutan.
Docker Registry:
Docker Register API
** y
Repositorio de imágenes
, que podemos considerar componentes esperados en esta sección.
Docker Registry
** es el servicio para almacenar y distribuir imágenes de contenedores, siendo
Docker Hub
es un ejemplo de un registro público.
Repositorio de imágenes
muestra en su relación con
Docker Engine
quien puede extraer y subir imágenes este repositorio