Sobes.tech
Junior

¿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.