Fundamentos de las imágenes de Docker
¿Qué es una imagen de Docker?
Una imagen de Docker es un paquete ligero, independiente y ejecutable que incluye todo lo necesario para ejecutar un software, incluyendo el código, el entorno de ejecución, las herramientas del sistema, las bibliotecas y la configuración. Sirve como un modelo para crear contenedores de Docker.
Características clave de las imágenes de Docker
Inmutabilidad
Las imágenes de Docker son inmutables, lo que significa que una vez creadas, no se pueden cambiar. Cualquier modificación requiere crear una nueva imagen.
graph LR
A[Dockerfile] --> B[Build Image]
B --> C[Create Container]
C --> D[Run Application]
Arquitectura en capas
Las imágenes de Docker utilizan un sistema de archivos en capas, lo que permite un almacenamiento y transferencia eficientes de los datos de la imagen.
Tipo de capa |
Descripción |
Ejemplo |
Capa base |
Sistema operativo fundamental |
Ubuntu 22.04 |
Capa de dependencias |
Bibliotecas y herramientas del sistema |
Python, Node.js |
Capa de aplicación |
Código y configuración de la aplicación |
Su aplicación personalizada |
Métodos de creación de imágenes
1. Dockerfile
El método más común para crear imágenes de Docker es utilizando un Dockerfile.
## Example Dockerfile for a Python application
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y python3 python3-pip
COPY . /app
WORKDIR /app
RUN pip3 install -r requirements.txt
CMD ["python3", "app.py"]
2. Docker Commit
Puedes crear una imagen a partir de un contenedor en ejecución utilizando docker commit
.
## Create an image from a container
docker commit container_name new_image_name:tag
Convención de nomenclatura de imágenes
Las imágenes de Docker siguen un formato de nomenclatura específico:
repository_name/image_name:tag
- Ejemplo:
labex/python-app:latest
Comandos de gestión de imágenes
## List local images
docker images
## Pull an image from Docker Hub
docker pull ubuntu:22.04
## Remove an image
docker rmi image_name:tag
Mejores prácticas
- Mantenga las imágenes pequeñas y enfocadas
- Utilice imágenes base oficiales
- Minimice el número de capas
- Utilice compilaciones en múltiples etapas para aplicaciones complejas
Al entender estos conceptos básicos, estará bien preparado para trabajar con imágenes de Docker de manera efectiva en su flujo de trabajo de desarrollo.