David Guzman Lopez

Una Imagen Docker es una plantilla de solo lectura que contiene el código de la aplicación, las librerías y todas las dependencias necesarias para que una aplicación se ejecute.
Introducción
Si el contenedor es la máquina virtual ligera donde se ejecuta tu aplicación, la Imagen Docker es el plano de ingeniería inmutable que le da vida. En el ecosistema de Docker, comprender cómo se construyen y se administran las imágenes es el paso más importante para crear aplicaciones portátiles y eficientes.
A diferencia de un archivo binario simple, una Imagen Docker está organizada como un sofisticado sistema de capas. En este artículo, desglosaremos la estructura interna de una imagen, aprenderemos a construirla con un Dockerfile y, finalmente, cómo distribuirla para que otros puedan usar tu trabajo.
¿Qué es una Imagen Docker?
Una imagen no es un bloque monolítico; es una pila de archivos organizados en capas de datos distintos (distribución, software, librerías y personalización). Este enfoque de capas es lo que hace a Docker tan rápido y eficiente en términos de espacio en disco.
La Estructura de las Capas
Podemos concluir que una imagen se conforma de distintas capas de personalización, todas basadas en una Capa Inicial o Base Image.
- Base Image (Capa Inicial): Es el estado más puro del sistema operativo (SO). Si utilizamos una distribución de Linux, la imagen base se conecta al Kernel del Host (tu máquina),
- Capas de Personalización: Cada instrucción en el archivo de construcción de la imagen (
Dockerfile) agrega una nueva capa, que es de solo lectura. Por ejemplo, se pueden apilar capas para agregar la distribución Debian , instalar el editor vim y configurar un servidor como Apache. - Capa Escribible (Writable Layer): Cuando la imagen se ejecuta como un Contenedor , Docker agrega una capa superior temporal que es de lectura y escritura. Cualquier cambio realizado por la aplicación (creación de logs, edición de archivos) se produce en esta capa. Importante: si el contenedor se elimina, esta capa escribible y sus cambios se pierden (a menos que se usen volúmenes)

docker image ls
veo las imágenes que tengo localmente

docker pull ubuntu:20.04
bajo la imagen de ubuntu con una versión específica

Construir imagenes en docker
mkdir imagenes
Creo un directorio en mi máquina

cd imagenes
Entro al directorio

touch Dockerfile

creo un Dockerfile con esta estructura:
##Contenido del Dockerfile##
FROM ubuntu:latest
RUN touch /usr/src/hola-platzi.txt
##fin##

docker build -t ubuntu:platzi .
ubuntu es la imagen de la cual voy a basarme y la nueva la voy a llamar platzi
. en el directorio actual


docker run -it ubuntu:platzi
Corro el contenedor con la nueva imagen


Sistema de capas
docker history ubuntu:platzi
veo la info de como se construyó cada capa


