Sobes.tech
Junior

¿Qué se utiliza dentro de un contenedor Docker?

sobes.tech AI

Respuesta de la IA

El contenedor Docker utiliza una serie de tecnologías para el aislamiento de procesos y recursos:

  • Namespaces del núcleo de Linux: Proporcionan aislamiento para diversos recursos del sistema, como:

    • PID (ID de proceso): Aíslan los procesos.
    • Net (Red): Aíslan la pila de red.
    • Mount (mnt): Aíslan los puntos de montaje del sistema de archivos.
    • UTS (Unix Timesharing System): Aíslan el nombre del host y el nombre de dominio.
    • IPC (Comunicación entre procesos): Aíslan los mecanismos de interacción entre procesos.
    • User (ID de usuario y grupo): Aíslan los identificadores de usuarios y grupos.
  • Grupos de control (cgroups): Gestionan y limitan el uso de recursos de hardware para los procesos dentro del contenedor, incluyendo:

    • CPU: Limitación del uso del tiempo de procesador.
    • Memory: Limitación del uso de memoria RAM.
    • Block I/O: Limitación del ancho de banda de entrada/salida del disco.
    • Net I/O: Limitación del ancho de banda de entrada/salida de red.
  • Sistemas de archivos union: Proporcionan un sistema de archivos combinado compuesto por varias capas. Docker utiliza sistemas de archivos como OverlayFS, AUFS, Btrfs, ZFS. Esto permite gestionar eficientemente el almacenamiento de imágenes y crear capas solo para cambios.

  • Proceso Docker Daemon: Gestiona el ciclo de vida de los contenedores (creación, inicio, parada, eliminación).

  • Runtime del contenedor: Ejecución de bajo nivel del contenedor. Docker ha utilizado y soporta diferentes runtimes, como runc (especificación OCI), containerd.

  • Imagen del contenedor: Conjunto de capas del sistema de archivos y metadatos necesarios para ejecutar la aplicación.

  • Aplicación: Código ejecutable, bibliotecas, dependencias y archivos de configuración que componen el programa en sí, que funciona dentro del contenedor.

En esencia, un contenedor es un proceso aislado (o conjunto de procesos) que funciona en un entorno restringido, proporcionado por el núcleo de Linux y gestionado por Docker.