Arostik Logo
ArostikVLARCK

Micro-Technology Solutions

Aros StudentAnalogía Cotidiana Incluida

What is Docker: Namespaces, Cgroups, and OCI Containerization Architecture

Technical guide to software containerization: Linux namespaces, cgroups resource allocation, and VM comparisons.

AS

AS

Aros Student

Sep 11, 20264 min650 views
What is Docker: Namespaces, Cgroups, and OCI Containerization Architecture

Qué es Docker: La tecnología de Contenedores y Aislamiento de Procesos

Arquitectura de Contenedorización Ligera sobre el Kernel de Linux

Durante décadas, los equipos de ingeniería de software enfrentaron la fricción de reproducir aplicaciones de manera consistente entre entornos locales de desarrollo, servidores de pruebas y producción debido a discrepancias en versiones de librerías, dependencias y variables del sistema. Docker revolucionó el ciclo de vida del software empaquetando el código junto con la totalidad de su entorno de ejecución en unidades portátiles, aisladas e inmutables denominadas Contenedores.

En la Tecnología Real (Explicación Sencilla)

Escenario de Aplicación Real: En un servidor que necesita ejecutar simultáneamente una aplicación web moderna en Node.js 22 y un servicio heredado en Python 2.7: - Sin Contenedores: Ambas aplicaciones compiten por las librerías globales del sistema operativo, requiriendo complejas configuraciones de entorno y arriesgando fallos por dependencias incompatibles. - Con Docker: Cada aplicación se ejecuta dentro de su propio contenedor sellado con sus binarios exactos. Comparten el mismo kernel de Linux de forma eficiente sin interferir entre sí.

Explicación Técnica Profunda

A diferencia de una Máquina Virtual (VM) que requiere un hipervisor y ejecuta una copia completa de un sistema operativo huésped (Guest OS) con su propio kernel, un Contenedor Docker es un proceso aislado que se ejecuta directamente sobre el Kernel del sistema operativo anfitrión, utilizando dos primitivas fundamentales de Linux:

1.
Linux Namespaces (Espacios de Nombres): Crean la ilusión de que el contenedor es una máquina independiente aislando:
pid (Árbol de procesos independiente).
net (Interfaces de red y puertos propios).
mnt (Puntos de montaje y sistema de archivos aislado).
uts (Nombre de host independiente).
2.
Control Groups (cgroups): Gobiernan y limitan el consumo máximo de recursos físicos del hardware (cuánta memoria RAM, porcentaje de CPU y velocidad de E/S de disco puede utilizar el contenedor).
3.
Sistema de Archivos en Capas (OverlayFS): Las imágenes se construyen mediante capas inmutables de solo lectura, permitiendo compartir bloques comunes entre múltiples contenedores y ahorrando espacio en disco.
Característica de AislamientoMáquina Virtual Tradicional (VM)Contenedor Docker / OCI
Nivel de VirtualizaciónVirtualización de hardware completoAislamiento a nivel de Kernel de SO
Tiempo de ArranqueMinutos (Carga completa del SO)Milisegundos (Inicio de un proceso)
Uso de Memoria BaseCientos de MB / Varios GB por VMMegabytes (Solo el proceso y dependencias)
Sobrecarga de RendimientoCierta penalización por hipervisorRendimiento cercano al nativo (Bare Metal)
arostik@ubuntu:~ (bash)
# Desplegar un contenedor Nginx aislado mapeando el puerto 8080 del hostdocker run -d -p 8080:80 --name mi-servidor-web nginx:alpine # Inspeccionar los contenedores activos y puertos asociadosdocker ps # Monitorear el consumo de CPU, memoria y red de los contenedores en vivodocker stats

Nota Técnica

Nota Técnica sobre Seguridad de Contenedores: Como los contenedores comparten el mismo kernel que el sistema host, nunca deben ejecutarse procesos internos con privilegios root ni con el flag --privileged en producción para evitar vulnerabilidades de escape de contenedor (container breakout).

Buenas Prácticas y Advertencias de Errores Comunes

Ejecutar procesos sin privilegios de root: Configura la directiva USER en tus Dockerfiles para que el proceso dentro del contenedor se ejecute con un usuario sin privilegios.
Utilizar imágenes base ligeras: Prefiere imágenes basadas en alpine o imágenes distroless para reducir la superficie de ataque y acelerar el tiempo de despliegue.
Uso de Volúmenes para Persistencia: Recuerda que el almacenamiento de un contenedor es efímero por defecto; monta siempre volúmenes gestionados (docker volume) para bases de datos y archivos permanentes.

Glosario Rápido

1.
Namespace: Característica del kernel de Linux que aísla recursos globales del sistema para un grupo de procesos.
2.
cgroups: Subsistema del kernel que limita y mide el uso de CPU, memoria y ancho de banda por proceso.
3.
Dockerfile: Archivo de texto declarativo con las instrucciones paso a paso para construir una imagen de contenedor.

Mini Cuestionario Interactivo3 preguntas

Selecciona una opción para autoevaluarte al instante. La respuesta se califica de inmediato.

Aciertos: 0 / 3
1

¿Por qué los contenedores Docker consumen sustancialmente menos recursos y arrancan en milisegundos frente a las máquinas virtuales?

2

¿Qué primitiva del kernel de Linux se encarga de limitar y medir el consumo de memoria RAM y núcleos de CPU de un contenedor?

3

¿Qué ocurre con los datos escritos dentro de un contenedor si este es eliminado sin haber configurado volúmenes?

Diagnóstico y Práctica en Arostik

Genera esquemas estructurados para tus bases de datos contenerizadas con nuestro Generador de Esquemas SQL.

Tu opinión mejora Aroslap

¿Te resultó útil esta publicación?

Califica tu experiencia para optimizar los próximos artículos técnicos.

Selecciona una calificación

More Articles in Aros Student