1. ¿Qué es un contenedor?
Temas del programa: 4.1.1
Una primera definición
Section titled “Una primera definición”Un contenedor es un entorno de ejecución aislado para uno o varios procesos que utilizan un conjunto definido de archivos y dependencias
En el caso habitual de contenedores Linux
- Los procesos se ejecutan utilizando el kernel Linux disponible en su entorno de ejecución
- El aislamiento se implementa mediante mecanismos del sistema operativo
- Los archivos necesarios para ejecutar la aplicación se proporcionan mediante una imagen y sus capas
Una aplicación puede dividirse
Section titled “Una aplicación puede dividirse” APLICACIÓN
┌────────────┼────────────┐ ▼ ▼ ▼
Frontend API PostgreSQL
contenedor contenedor contenedorCada componente puede tener su propio ciclo de vida y configuración
Separar componentes es una decisión de arquitectura y no una obligación para todas las aplicaciones
Una analogía para comenzar
Section titled “Una analogía para comenzar”Imagina una mudanza
ANTES
RopaLibrosHerramientasDocumentos
Todo mezcladoDESPUÉS
Caja 1 → librosCaja 2 → herramientasCaja 3 → documentosCada caja organiza los elementos que deben trasladarse juntos
Los contenedores ayudan a empaquetar y ejecutar software con sus archivos necesarios
La analogía tiene un límite
Section titled “La analogía tiene un límite”Una caja es un objeto físico
Un contenedor es un entorno de ejecución que el sistema operativo administra
Aplicación │ ▼Proceso aislado │ ▼Sistema operativoLa analogía ayuda a comprender la idea de organización y aislamiento pero no describe el funcionamiento interno
Contenedor y máquina virtual
Section titled “Contenedor y máquina virtual”Virtualiza hardware
Ejecuta un sistema operativo invitado con su propio kernel
Aísla procesos
Comparte el kernel de su entorno Linux
Arquitectura de una máquina virtual
Section titled “Arquitectura de una máquina virtual”┌───────────────────────────────┐│ Aplicación │├───────────────────────────────┤│ Bibliotecas y dependencias │├───────────────────────────────┤│ Sistema operativo invitado │├───────────────────────────────┤│ Kernel del sistema invitado │└───────────────────────────────┘ │ ▼ Hipervisor │ ▼ HardwareArquitectura de un contenedor Linux
Section titled “Arquitectura de un contenedor Linux”┌───────────────────────────────┐│ Aplicación │├───────────────────────────────┤│ Bibliotecas y dependencias │├───────────────────────────────┤│ Archivos de la imagen │└───────────────────────────────┘ │ ▼ Runtime de contenedores │ ▼┌───────────────────────────────┐│ Kernel Linux compartido │└───────────────────────────────┘ │ ▼ HardwareLa diferencia fundamental
Section titled “La diferencia fundamental”| Característica | Máquina virtual | Contenedor Linux |
|---|---|---|
| Unidad principal | Sistema operativo virtualizado | Procesos aislados |
| Kernel | Kernel propio del invitado | Comparte el kernel de su entorno |
| Archivos | Sistema operativo completo | Archivos de la imagen |
| Inicio | Arranca un sistema operativo | Inicia los procesos configurados |
| Sobrecarga | Generalmente mayor | Generalmente menor |
| Aislamiento | Frontera de virtualización | Aislamiento a nivel de sistema operativo |
La sobrecarga y el nivel de aislamiento dependen de la implementación y la configuración
¿Los contenedores siempre utilizan Linux?
Section titled “¿Los contenedores siempre utilizan Linux?”No necesariamente
Existen contenedores Linux y contenedores Windows con diferentes requisitos
En este bloque estudiaremos principalmente contenedores Linux porque son la base de muchos entornos modernos de desarrollo y despliegue
Contenedores │ ├── Contenedores Linux │ └── Contenedores WindowsNo se debe confundir el sistema operativo de tu computadora con el sistema operativo del entorno donde se ejecuta el contenedor
¿Qué pasa en Windows y macOS?
Section titled “¿Qué pasa en Windows y macOS?”Una computadora Windows o macOS no proporciona de forma nativa el kernel Linux que necesitan los contenedores Linux
Por eso las herramientas habituales utilizan un entorno Linux
Windows o macOS │ ▼Entorno Linux │ ▼Motor de contenedores │ ▼Contenedores LinuxEn Windows se utiliza comúnmente WSL 2 con Docker Desktop
En macOS Docker Desktop utiliza una máquina virtual Linux administrada por la herramienta
¿Qué puede contener una imagen?
Section titled “¿Qué puede contener una imagen?”Imagen de una aplicación
├── Archivos del programa├── Bibliotecas necesarias├── Dependencias├── Certificados requeridos├── Archivos de configuración predeterminados└── Instrucciones de ejecuciónUna imagen no tiene que contener todos los elementos de una computadora
Por ejemplo no necesita incluir un escritorio gráfico si ejecutará una API web
¿Qué no resuelven los contenedores automáticamente?
Section titled “¿Qué no resuelven los contenedores automáticamente?”Los contenedores no garantizan por sí solos
- Que el código sea correcto
- Que la aplicación sea segura
- Que existan respaldos
- Que los datos sean persistentes
- Que el sistema soporte miles de usuarios
- Que todos los equipos tengan idéntico rendimiento
- Que un despliegue sea de alta disponibilidad
Relación con el laboratorio
Section titled “Relación con el laboratorio”Este tema se practica en el Laboratorio 1 — Primeros contenedores.
Qué sigue
Section titled “Qué sigue”Continúa con 2. Docker es la herramienta.

