¿Cuál es la diferencia entre una imagen y un contenedor?
sobes.tech AI
Respuesta de la IA
Una imagen (image) es una instantánea estática e inmutable del sistema de archivos y los parámetros de configuración necesarios para ejecutar una aplicación. Sirve como plantilla.
Un contenedor (container) es una instancia en ejecución de una imagen. Es dinámico y representa un proceso en funcionamiento con su propia interfaz de red, sistema de archivos (basado en la imagen) y entorno aislado.
| Característica | Imagen | Contenedor |
|---|---|---|
| Estado | Inmutable | Mutable |
| Entidad | Plantilla | Instancia en ejecución |
| Tamaño | Generalmente menor que un contenedor en ejecución | Puede ser mayor debido a la capa de escritura |
| Ciclo de vida | Se crea, se mantiene | Se crea, se inicia, se detiene, se elimina |
Ejemplo: Imagen Dockerfile:
# Imagen base
FROM ubuntu:latest
# Copiar la aplicación
COPY app /app
# Instalar dependencias
RUN apt-get update && apt-get install -y python3
# Definir directorio de trabajo
WORKDIR /app
# Comando de inicio
CMD ["python3", "main.py"]
Este Dockerfile describe cómo construir una imagen. Después de construir la imagen, por ejemplo con el comando docker build -t myapp ., obtenemos una imagen estática llamada myapp.
Luego, al ejecutar el comando docker run -d myapp, creamos un contenedor basado en esa imagen. Este contenedor es un proceso activo en el que se ejecuta nuestra aplicación. Se pueden crear varios contenedores a partir de una misma imagen. Los cambios dentro de un contenedor (por ejemplo, grabación de archivos) no afectan a la imagen ni a otros contenedores creados a partir de la misma, gracias al mecanismo Copy-on-Write.