Fundamentos de las Imágenes Docker
¿Qué son las Imágenes Docker?
Las imágenes Docker son paquetes ejecutables, ligeros y autónomos que incluyen todo lo necesario para ejecutar una aplicación: código, entorno de ejecución, herramientas del sistema, bibliotecas y configuraciones. Sirven como bloques de construcción fundamentales de la tecnología de contenedores, permitiendo un despliegue de software consistente y portátil en diferentes entornos informáticos.
Componentes Clave de las Imágenes Docker
graph TD
A[Imagen Docker] --> B[Capa Base]
A --> C[Capa de la Aplicación]
A --> D[Capa de Configuración]
B --> E[Sistema Operativo]
B --> F[Bibliotecas del Sistema]
C --> G[Código de la Aplicación]
C --> H[Dependencias]
D --> I[Variables de Entorno]
D --> J[Comandos de Inicio]
Estructura e Capas de la Imagen
| Tipo de Capa |
Descripción |
Ejemplo |
| Capa Base |
Sistema operativo fundamental |
Ubuntu 22.04 |
| Capas Intermedias |
Dependencias del sistema |
Entorno de ejecución de Python |
| Capa de la Aplicación |
Código fuente y archivos de la aplicación |
Aplicación web |
| Capa de Configuración |
Configuraciones de tiempo de ejecución |
Mapas de puertos |
Creación de una Imagen Docker: Ejemplo Práctico
## Crear un directorio de proyecto
mkdir my-docker-app
cd my-docker-app
## Crear una simple aplicación Python
echo "print('¡Hola, Docker!')" > app.py
## Crear el Dockerfile
cat > Dockerfile << EOL
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y python3
COPY app.py /app/app.py
WORKDIR /app
CMD ["python3", "app.py"]
EOL
## Construir la imagen Docker
docker build -t my-python-app .
## Ejecutar el contenedor
docker run my-python-app
Este ejemplo muestra la creación de una imagen Docker con una base mínima de Ubuntu, la instalación de Python y la ejecución de un simple script de Python. El Dockerfile define cada capa de la imagen, garantizando la reproducibilidad y la consistencia en diferentes entornos.
Características de la Imagen
Las imágenes Docker son inmutables, lo que significa que una vez creadas, no cambian. Cada imagen consta de múltiples capas de solo lectura que se pueden compartir entre diferentes imágenes, lo que promueve la eficiencia en el almacenamiento y los tiempos de descarga.