Sobes.tech
Middle

¿En qué se basa el aislamiento de contenedores en Docker?

sobes.tech AI

Respuesta de la IA

La aislamiento de contenedores en Docker se basa en las siguientes tecnologías y mecanismos principales del núcleo de Linux:

  1. Namespaces (Espacios de nombres): Permiten aislar la visibilidad y el acceso a los recursos del sistema. Docker utiliza varios tipos de Namespaces:

    • PID namespace: Aísla los procesos, cada contenedor ve solo sus propios procesos (PID 1 dentro del contenedor).
    • Net namespace: Aísla la pila de red (interfaces de red, direcciones IP, puertos, reglas de enrutamiento).
    • Mnt namespace: Aísla los puntos de montaje del sistema de archivos.
    • UTS namespace: Aísla el hostname y el nombre de dominio.
    • IPC namespace: Aísla los recursos de comunicación entre procesos (semaforos, memoria compartida).
    • User namespace: Aísla los IDs de usuario y grupo.
  2. Control Groups (cgroups): Permiten limitar y controlar el consumo de recursos del sistema (CPU, memoria, I/O, tráfico de red) para grupos de procesos. Docker utiliza cgroups para:

    • Limitar la cantidad de CPU o la fracción de tiempo de procesador.
    • Limitar la memoria disponible.
    • Priorización o limitación de entrada/salida de disco.
    • Limitar el tráfico de red.
  3. Union File Systems (UnionFS): Crean capas del sistema de archivos. Docker utiliza UnionFS como OverlayFS, AUFS (más antiguo), Btrfs. Permiten:

    • Crear capas ligeras para las imágenes de Docker.
    • Utilizar eficientemente el espacio en disco mediante el uso compartido de capas base.
    • Al registrar cambios en el contenedor, crear capas COW (Copy-on-Write), sin modificar la imagen base.
  4. Seccomp (Modo de computación segura): Limita las llamadas al sistema (syscalls) que puede realizar un proceso dentro del contenedor, reduciendo así la superficie de ataque. Docker usa perfiles seccomp por defecto para la mayoría de los contenedores.

  5. AppArmor / SELinux: Para mayor seguridad y aislamiento, se pueden usar módulos de control de acceso obligatorio (MAC), como AppArmor o SELinux. Proporcionan un control más granular sobre lo que los procesos pueden hacer (por ejemplo, acceso a archivos, recursos de red). Docker puede usar perfiles de AppArmor o SELinux si están configurados en el sistema host.