1.1 Conceptos básicos de Docker Images
Docker Images (imágenes de Docker) — son plantillas para los contenedores Docker. Contienen todo lo necesario para ejecutar aplicaciones: código, bibliotecas, dependencias, herramientas y archivos de configuración. Entender qué son las Docker Images y cómo están estructuradas es importante para usar Docker de manera eficiente.
Docker Image — es un modelo inmutable
que se utiliza para crear contenedores. Contiene todos los componentes necesarios para ejecutar una aplicación en un entorno aislado. Cuando ejecutas un contenedor, Docker crea una instancia de la imagen y la pone en marcha.
Características clave de Docker Images:
- Inmutabilidad: las imágenes de Docker son inmutables. Cualquier cambio en el contenedor no afecta a la imagen original. Para cambiar el contenido de una imagen, es necesario crear una nueva imagen.
- Estructura en capas: las Docker Images están compuestas de varias capas. Cada capa representa un cambio en comparación con la anterior. Esto permite usar el espacio de manera eficiente, reutilizando capas.
- Identificación: cada imagen tiene un identificador único (SHA256-hash), así como uno o varios tags que facilitan la gestión de versiones de las imágenes.
Estructura de Docker Images:
Las Docker Images tienen una estructura en capas, donde cada capa es un sistema de archivos. Estas capas se almacenan en la caché de Docker y pueden ser reutilizadas por otras imágenes. La estructura en capas hace que las Docker Images sean ligeras y eficientes. Por ejemplo, la primera capa puede ser el sistema operativo, la segunda Python y la tercera tu aplicación.
Componentes principales de la estructura de Docker Images:
- Capa base (Base Layer): la capa inicial de la imagen, que a menudo se usa como base para crear otras imágenes. Por ejemplo, puede ser una versión mínima de un sistema operativo como Ubuntu o Alpine Linux.
- Capas intermedias (Intermediate Layers): estas capas se crean en base a comandos ejecutados en el Dockerfile (por ejemplo, instalación de paquetes, copia de archivos, etc.). Cada capa añade cambios a la anterior.
- Capa final (Final Layer): la última capa, creada en base a la instrucción CMD, ENTRYPOINT o cambios dentro del contenedor, se llama capa "contenedor". Esta capa es temporal y solo existe mientras el contenedor está en ejecución.
1.2 Cómo funcionan las capas de Docker Images
Cada capa de una imagen de Docker representa un conjunto de cambios en comparación con la capa anterior. Cuando Docker crea una imagen, ejecuta cada instrucción del Dockerfile y agrega una nueva capa para cada cambio.
Ejemplo de creación de capas:
- Imagen base: comencemos con una imagen base, por ejemplo,
ubuntu:20.04
. Esta será la primera capa. - Instalación de paquetes: el comando
RUN apt-get update && apt-get install -y python3
creará una nueva capa con Python instalado. - Copia de archivos: el comando
COPY . /app
agregará los archivos de la aplicación en una nueva capa. - Configuración del directorio de trabajo: el comando
WORKDIR /app
creará una capa que configurará el directorio de trabajo para los comandos posteriores.
Ventajas de usar capas:
- Reutilización: las capas pueden ser reutilizadas por otras imágenes. Por ejemplo, si dos imágenes usan la misma capa base, Docker la descargará solo una vez, ahorrando espacio y tiempo.
- Caché: Docker almacena en caché las capas, lo que acelera el proceso de construcción de imágenes. Si una capa no ha cambiado, Docker la utiliza desde la caché en lugar de volver a construirla.
- Modularidad: la estructura de capas permite desarrollar imágenes de manera modular. Puedes actualizar o modificar capas individuales sin afectar toda la imagen.
Identificación y etiquetas de Docker Images:
Cada Docker Image se identifica con un hash único (SHA256), que se genera en función del contenido de la imagen y de todas sus capas. Para facilitar la administración y versionamiento, las Docker Images también pueden tener etiquetas.
Ejemplo de identificación de imágenes:
El siguiente comando mostrará una lista de todas las imágenes en tu sistema, incluyendo su repositorio, etiquetas, identificadores y tamaños:
docker images
1.3 Trabajo con Docker Images
Docker ofrece un montón de comandos para trabajar con imágenes. Aquí están los principales:
- Crear imagen:
docker build
- Iniciar un contenedor desde una imagen:
docker run
- Lista de imágenes:
docker images
- Eliminar una imagen:
docker rmi
- Buscar imágenes en Docker Hub:
docker search
- Cargar una imagen desde Docker Hub:
docker pull
- Enviar una imagen a Docker Hub:
docker push
Ejemplo de creación y uso de Docker Image:
1. Crear un Dockerfile:
# Usamos la imagen base de Ubuntu
FROM ubuntu:20.04
# Instalamos Python
RUN apt-get update && apt-get install -y python3
# Copiamos los archivos de la aplicación al contenedor
COPY . /app
# Establecemos el directorio de trabajo
WORKDIR /app
# Indicamos el comando para iniciar la aplicación
CMD ["python3", "app.py"]
2. Crear la imagen:
El siguiente comando creará una imagen con el nombre my_python_app
, utilizando el Dockerfile del directorio actual:
docker build -t my_python_app .
3. Iniciar un contenedor desde una imagen:
Usa el siguiente comando para iniciar un contenedor desde la imagen creada my_python_app
en modo background:
docker run -d my_python_app
GO TO FULL VERSION