Conceptos Básicos de Imágenes Docker
¿Qué es una Imagen Docker?
Una imagen Docker es un paquete ligero, autónomo y ejecutable que incluye todo lo necesario para ejecutar un software, incluyendo el código, el entorno de ejecución, las bibliotecas, las variables de entorno y los archivos de configuración. Actúa como un modelo para crear contenedores Docker.
Componentes Clave de las Imágenes Docker
Capas de la Imagen
Las imágenes Docker están compuestas de múltiples capas de solo lectura apiladas unas sobre otras. Cada capa representa un conjunto de cambios en el sistema de archivos:
graph TD
A[Capa Base: Ubuntu] --> B[Instalar Python]
B --> C[Copiar Código de la Aplicación]
C --> D[Establecer Variables de Entorno]
Anatomía de la Imagen
Una imagen Docker típica consta de varios componentes clave:
| Componente |
Descripción |
Ejemplo |
| Imagen Base |
Capa fundamental |
Ubuntu, Alpine Linux |
| Dependencias |
Bibliotecas y paquetes necesarios |
Python, Node.js |
| Código de la Aplicación |
Tu aplicación específica |
Aplicación Flask, Django |
| Configuración |
Ajustes de tiempo de ejecución |
Variables de entorno, Puertos |
Creación de Imágenes Docker
Dockerfile
Un Dockerfile es un documento de texto que contiene instrucciones para construir una imagen Docker. Aquí hay un ejemplo básico:
## Usar la imagen base oficial de Ubuntu
FROM ubuntu:22.04
## Actualizar las listas de paquetes
RUN apt-get update && apt-get upgrade -y
## Instalar Python
RUN apt-get install -y python3 python3-pip
## Establecer el directorio de trabajo
WORKDIR /app
## Copiar archivos de la aplicación
COPY . /app
## Instalar dependencias
RUN pip3 install -r requirements.txt
## Definir el comando predeterminado
CMD ["python3", "app.py"]
Construyendo una Imagen
Para construir una imagen Docker, utiliza el comando docker build:
## Construir imagen con una etiqueta
docker build -t myapp:v1 .
## Listar imágenes disponibles
docker images
Nomenclatura y Etiquetado de Imágenes
Las imágenes Docker siguen una convención de nomenclatura estándar:
[registro]/[usuario]/[nombre-imagen]:[etiqueta]
- Ejemplo:
docker.io/labex/python-app:latest
Almacenamiento y Distribución de Imágenes
Las imágenes se pueden almacenar en:
- Demonio Docker local
- Registros de contenedores (Docker Hub, Registro LabEx)
- Repositorios privados
Buenas Prácticas
- Usar imágenes base mínimas
- Minimizar el número de capas
- Aprovechar la caché de compilación
- Evitar instalar paquetes innecesarios
- Usar compilaciones multietapa para imágenes más pequeñas
Al comprender estos fundamentos, los desarrolladores pueden crear imágenes Docker eficientes y reproducibles para sus aplicaciones.