Contenedor Docker: Qué son y cómo funcionan

contenedor docker

Un Docker container (o contenedor Docker) es una unidad estándar de software que empaqueta el código de una aplicación y todas sus dependencias para que pueda ejecutarse de manera rápida y confiable en cualquier entorno. Vamos a desglosarlo en partes simples para entender cómo funcionan y por qué son tan importantes.


¿Qué es un contenedor?

Imagina que tienes una aplicación que necesita ejecutarse en diferentes computadoras. Normalmente, deberías asegurarte de que cada computadora tenga las versiones correctas de las dependencias, el sistema operativo compatible, y configuraciones específicas. Esto puede ser un dolor de cabeza.

Un contenedor es como una caja sellada que incluye todo lo necesario para ejecutar una aplicación: el código, las bibliotecas, las herramientas del sistema, y la configuración. Puedes mover esta caja a cualquier lugar, y siempre funcionará igual, sin importar dónde la pongas.


Características principales

  1. Ligereza:
    • Los contenedores comparten el núcleo del sistema operativo (kernel) del host, lo que los hace mucho más livianos que las máquinas virtuales.
    • No necesitas un sistema operativo completo en cada contenedor.
  2. Portabilidad:
    • «Empaquetado una vez, ejecutado en cualquier lugar» es el lema.
    • Un contenedor que funciona en tu computadora funcionará igual en un servidor remoto o en la nube.
  3. Aislamiento:
    • Cada contenedor tiene su propio espacio de trabajo aislado, lo que evita conflictos entre aplicaciones.
  4. Eficiencia:
    • Varios contenedores pueden ejecutarse simultáneamente en una sola máquina sin consumir demasiados recursos.

Cómo funcionan los contenedores

1. Imágenes de Docker

Un contenedor comienza a partir de una imagen de Docker. Una imagen es como una plantilla que describe qué hay dentro del contenedor.

Imagina que tienes una receta para hacer un pastel (imagen). Cuando horneas el pastel (inicias el contenedor), usas esa receta, pero el pastel puede ser modificado sin cambiar la receta original.

Ejemplo de imagen:

docker pull nginx
Esto descarga la imagen de nginx, un servidor web.

2. Ciclo de vida de un contenedor

Un contenedor pasa por diferentes etapas:

  • Creación: El contenedor es configurado a partir de una imagen.
  • Inicio: El contenedor comienza a ejecutarse.
  • Parada: El contenedor deja de ejecutarse, pero sus datos pueden mantenerse.
  • Eliminación: El contenedor es eliminado completamente.

Comando para iniciar un contenedor:

docker run -d --name mi_contenedor nginx

3. Aislamiento

Docker usa tecnologías del kernel de Linux como namespaces y cgroups para asegurar que cada contenedor tenga:

  • Su propio sistema de archivos.
  • Su propio espacio de red (dirección IP, puertos).
  • Límites de uso de CPU y memoria.

Es como tener un apartamento en un edificio donde cada inquilino tiene su propio espacio privado (aislamiento).


Cómo trabajar con contenedores

Crear y ejecutar un contenedor

docker run -d --name mi_contenedor nginx
  • -d: Ejecuta el contenedor en segundo plano.
  • –name: Asigna un nombre al contenedor.
  • nginx: Especifica la imagen que usará.

Listar contenedores

Muestra todos los contenedores en ejecución.

docker ps

Muestra todos los contenedores, incluso los detenidos.

docker ps -a

Detener un contenedor

docker stop mi_contenedor

Eliminar un contenedor

docker rm mi_contenedor

Acceder al interior de un contenedor

Esto te abre una terminal dentro del contenedor.
docker exec -it mi_contenedor bash

Ventajas de los contenedores

  1. Simplificación del desarrollo:
    • Los desarrolladores pueden trabajar con el mismo entorno en cualquier computadora.
  2. Eficiencia en recursos:
    • Los contenedores usan menos CPU y memoria que las máquinas virtuales.
  3. Escalabilidad:
    • Es fácil iniciar o detener múltiples instancias de una aplicación.
  4. Reproducibilidad:
    • Puedes reconstruir rápidamente el mismo entorno en cualquier lugar.

Comparación: Contenedores vs Máquinas Virtuales

CaracterísticaContenedoresMáquinas Virtuales
AislamientoA nivel de sistema operativoA nivel de hardware
TamañoLivianos (MB)Pesados (GB)
InicioRápido (segundos)Más lento (minutos)
Recursos compartidosKernel compartido del hostSistema operativo completo
FlexibilidadMuy portátilMenos portátil

Ejemplo práctico

Supongamos que necesitas ejecutar una aplicación web.

Descarga una imagen oficial de nginx:

docker pull nginx

Inicia un contenedor y expón el puerto 80:

docker run -d -p 8080:80 --name servidor_web nginx

-p 8080:80 mapea el puerto 80 del contenedor al puerto 8080 del host.

curl http://localhost:8080

Abre tu navegador y ve a http://localhost:8080. Deberías ver la página predeterminada de Nginx.

How to Use the NGINX Docker Official Image | Docker

Resumen

Un contenedor Docker es:

  • Ligero y portátil.
  • Una forma de empaquetar aplicaciones con todas sus dependencias.
  • Ideal para ejecutar aplicaciones de forma aislada y eficiente.

Comentarios

No hay comentarios aún. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *