Creación de Imágenes Docker
Comprensión de las Imágenes Docker
Las imágenes Docker son plantillas de solo lectura que contienen todo lo necesario para ejecutar una aplicación: código, entorno de ejecución, bibliotecas, variables de entorno y archivos de configuración. Sirven como planos para crear contenedores.
graph LR
A[Dockerfile] --> B[Imagen Docker]
B --> C[Contenedor Docker]
Fundamentos de Dockerfile
Un Dockerfile es un documento de texto que contiene instrucciones para construir una imagen Docker. Cada instrucción crea una nueva capa en la imagen.
Tipos de Instrucciones de Dockerfile
| Instrucción |
Propósito |
Ejemplo |
| FROM |
Establecer imagen base |
FROM ubuntu:22.04 |
| RUN |
Ejecutar comandos |
RUN apt-get update |
| COPY |
Copiar archivos |
COPY app.py /app/ |
| WORKDIR |
Establecer directorio de trabajo |
WORKDIR /app |
| CMD |
Comando predeterminado |
CMD ["python", "app.py"] |
Creación de una Imagen de Ejemplo de Aplicación Python
Estructura del Proyecto de Ejemplo
/project
├── Dockerfile
└── app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello, Docker World!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
Dockerfile
## Usar la imagen oficial de Python como imagen base
FROM python:3.9-slim
## Establecer el directorio de trabajo
WORKDIR /app
## Copiar archivos del proyecto
COPY app.py requirements.txt ./
## Instalar dependencias
RUN pip install --no-cache-dir -r requirements.txt
## Exponer puerto
EXPOSE 5000
## Definir comando predeterminado
CMD ["python", "app.py"]
Construcción y Gestión de Imágenes Docker
## Crear requirements.txt
echo "flask" > requirements.txt
## Construir imagen Docker
docker build -t my-flask-app .
## Listar imágenes
docker images
## Ejecutar contenedor a partir de la imagen
docker run -p 5000:5000 my-flask-app
Estrategias de Optimización de Imágenes
- Usar construcciones multietapa
- Minimizar el número de capas
- Aprovechar la caché de compilación
- Usar etiquetas de imagen específicas
- Eliminar archivos innecesarios