Qué es un contenedor y en qué se diferencia de una VM
"En mi máquina sí funciona." Si alguna vez escuchó esa frase en un equipo de desarrollo, ya conoce el problema que Docker vino a resolver. Una aplicación depende de una versión concreta del lenguaje, de bibliotecas y de archivos de configuración. Cuando algo de eso cambia entre la laptop de quien programa y el servidor, la aplicación falla. Un contenedor empaqueta la aplicación con todo lo que necesita, para que se comporte igual en cualquier lugar.
Qué es un contenedor
Un contenedor es un proceso aislado que corre sobre el sistema operativo anfitrión. No es una computadora completa: es un programa normal al que el kernel de Linux le pone anteojeras. Esas anteojeras se construyen con dos mecanismos del kernel:
- Namespaces: le dan al proceso su propia vista del sistema. Dentro del contenedor, el proceso cree que es el número 1, ve solo sus archivos, tiene su propia red y su propio nombre de equipo.
- Cgroups (grupos de control): limitan cuánta CPU, memoria y cantidad de procesos puede consumir.
Si ejecuta un contenedor y luego lista los procesos del anfitrión con ps, verá el proceso del contenedor como uno más.
Contenedor frente a máquina virtual
Una máquina virtual (VM) emula hardware completo y encima arranca un sistema operativo entero, con su propio kernel. Un contenedor, en cambio, comparte el kernel del anfitrión y solo trae los archivos que la aplicación necesita.

- 1. Cada máquina virtual arranca un sistema operativo completo con su propio kernel: pesa gigabytes, tarda minutos y aísla muy bien.
- 2. El hipervisor reparte el hardware entre las máquinas virtuales.
- 3. Los contenedores comparten un solo kernel, el del anfitrión. El motor solo les pone paredes (namespaces) y límites (cgroups): pesan megabytes y arrancan en segundos.
| Característica | Máquina virtual | Contenedor |
|---|---|---|
| Qué virtualiza | Hardware | Sistema operativo |
| Kernel | Propio | Compartido con el anfitrión |
| Tamaño típico | Varios GB | Decenas a cientos de MB |
| Arranque | Minutos | Segundos o menos |
| Aislamiento | Fuerte | Bueno, pero menor |
Son livianos porque comparten el kernel, pero por la misma razón el aislamiento es más delgado. Si un atacante escapa de un contenedor mal configurado, queda directamente sobre el anfitrión. Por eso el último módulo del curso está dedicado a la seguridad.
Breve historia
La idea de aislar procesos es mucho más vieja que Docker. Lo que Docker aportó fue hacerla fácil: un formato de imagen portable y un comando sencillo.
| Año | Hito |
|---|---|
| 1979 | Unix Version 7 incluye chroot, que cambia la raíz visible de un proceso |
| 2000 | FreeBSD 4.0 presenta las jails, entornos aislados dentro de un mismo sistema |
| 2008 | Los cgroups entran al kernel Linux y nace LXC, los contenedores de Linux |
| 2013 | Solomon Hykes presenta Docker en PyCon; nace de la empresa dotCloud |
| 2014 | Google anuncia Kubernetes para orquestar contenedores a gran escala |
| 2015 | Se crea la Open Container Initiative (OCI) para estandarizar imágenes y ejecución |
| 2022 | Kubernetes 1.24 deja de usar Docker internamente y habla con containerd |
Qué es Docker
Docker es la plataforma que popularizó los contenedores. Tiene tres piezas que usará todo el tiempo:
- El cliente
docker: el comando que usted escribe en la terminal. - El daemon
dockerd: el servicio en segundo plano que crea y administra los contenedores. El cliente le habla a través de un socket. - Los registros: almacenes de imágenes, como Docker Hub, de donde se descargan las plantillas.
Existen alternativas compatibles como Podman o containerd. Lo que aprenda aquí se traslada casi sin cambios, porque todas siguen el estándar OCI.
Dónde se usa
| Lugar | Ejemplo |
|---|---|
| Nube | Servicios como AWS ECS, Azure Container Apps o Google Cloud Run ejecutan contenedores |
| Orquestadores | Kubernetes reparte miles de contenedores entre muchos servidores |
| Integración continua | GitHub Actions o GitLab CI construyen y prueban dentro de contenedores |
| Desarrollo | Una base de datos local se levanta en segundos sin instalarla |
| Seguridad | Herramientas como Trivy o Zeek se ejecutan en contenedores desechables |
Por qué importa en ciberseguridad
Como profesional de seguridad usted necesitará levantar herramientas sin ensuciar su sistema, revisar imágenes vulnerables y detectar contenedores con privilegios excesivos. Sin dominar los contenedores no podrá auditar buena parte de la infraestructura moderna. En la empresa ficticia del curso, Cafetal Digital S.A., el equipo acaba de migrar su tienda en línea a contenedores, y usted ayudará a hacerlo bien.
Conceptos clave
| Concepto | Qué significa |
|---|---|
| Imagen | Plantilla de solo lectura con la aplicación y sus dependencias |
| Contenedor | Instancia en ejecución de una imagen |
| Capa | Conjunto de cambios de archivos que se apila para formar una imagen |
| Registro | Servidor que guarda y distribuye imágenes |
| Daemon | Servicio dockerd que hace el trabajo real |
| Dockerfile | Receta de texto para construir una imagen |
| Anfitrión | Sistema operativo y kernel sobre el que corren los contenedores |
Cómo leer una sintaxis y pedir ayuda
En las fichas del curso verá la forma general de cada comando. Los corchetes indican algo opcional, las MAYÚSCULAS son valores que usted reemplaza y ... significa que puede repetirse:
docker run [OPCIONES] IMAGEN [COMANDO] [ARG...]Para pedir ayuda, agregue --help a cualquier subcomando. La documentación completa está en docs.docker.com.
$ docker run --help | head -n 3
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]