Fundamentos de las Imágenes Docker
¿Qué son las Imágenes Docker?
Las imágenes Docker son plantillas de solo lectura utilizadas para crear contenedores. Contienen entornos de software preconfigurados, código de aplicación, dependencias y configuraciones de tiempo de ejecución. Las imágenes Docker sirven como planos para desplegar entornos de aplicación consistentes y reproducibles en diferentes sistemas.
Componentes Clave de las Imágenes Docker
graph TD
A[Imagen Docker] --> B[Capa Base]
A --> C[Capa de Aplicación]
A --> D[Capa de Configuración]
| Componente |
Descripción |
Ejemplo |
| Capa Base |
Sistema operativo fundamental |
Ubuntu 22.04 |
| Capa de Aplicación |
Software y dependencias |
Python 3.9, nginx |
| Capa de Configuración |
Configuraciones de tiempo de ejecución |
Variables de entorno |
Creación de una Imagen Docker Básica
Aquí hay un ejemplo de la creación de una imagen simple de una aplicación web Python:
## Crear directorio del proyecto
mkdir docker-demo
cd docker-demo
## Crear Dockerfile
touch Dockerfile
## Contenido del Dockerfile
cat > Dockerfile << EOL
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y python3 python3-pip
WORKDIR /app
COPY app.py .
RUN pip3 install flask
EXPOSE 5000
CMD ["python3", "app.py"]
EOL
## Crear la aplicación Flask de muestra
cat > app.py << EOL
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Ejemplo de Imagen Docker"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
EOL
## Construir la imagen Docker
docker build -t python-web-app .
Capas de la Imagen y Almacenamiento
Las imágenes Docker están compuestas de múltiples capas de solo lectura. Cada instrucción en el Dockerfile crea una nueva capa, lo que permite un almacenamiento eficiente y una creación rápida de la imagen. Cuando se construye una imagen, Docker guarda en caché estas capas para optimizar los tiempos de construcción y reducir el uso del espacio en disco.
Identificación de la Imagen
Las imágenes Docker se identifican de forma única por:
- Nombre del repositorio
- Etiqueta
- ID de la imagen
Ejemplo: ubuntu:22.04 o python-web-app:latest