Docker.pdf


Vista previa del archivo PDF docker.pdf


Página 1 2 34591

Vista previa de texto


separación entre el espacio del núcleo y del usuario tiene como objetivo primordial
proteger el sistema de aplicaciones dañinas o defectuosas.
La gran ventaja de la virtualización basada en contenedores reside en que las aplicaciones
con diferentes requisitos pueden ejecutarse aisladas unas de otras sin que por ello haya
que asumir la sobrecarga de un sistema huésped separado. Para ello, la tecnología de
contenedores aprovecha dos funciones básicas del kernel de Linux: los grupos de
control (Cgroups) y los espacios de nombres Kernel.


Los Cgroups limitan el acceso de procesos a la memoria, la CPU y los recursos
I/O de manera que evitan que las necesidades en cuanto a recursos de un
proyecto concreto afecten a otros procesos en ejecución.



Los Namespaces (espacios de nombres) limitan los procesos y sus procesos hijo
a una sección específica del sistema subyacente y son usados por Docker para
encapsular proyectos en cinco campos concretos:
o Identificación de sistemas (UTS): los espacios de nombres UTS se usan
en la virtualización basada en contenedores para asignar a los
contenedores su propio nombre de dominio y de equipo.
o ID de proceso (PID): cada contenedor Docker usa un espacio de nombres
independiente para los identificadores (ID) de proceso. Todos aquellos
procesos que tengan lugar fuera del contenedor no se visualizan desde el
interior de este, lo que permite que los procesos encapsulados en
contenedores dentro de un mismo sistema host posean el mismo PID sin
que ello cause problema alguno.
o Comunicaciones entre procesos (IPC): los espacios de nombres IPC
aíslan procesos en un contenedor, impidiendo la comunicación con
procesos fuera del contenedor.
o Recursos de red (NET): los espacios de nombres network permiten
adjudicar a cada contenedor recursos de red separados, como direcciones
IP o tablas de enrutamiento.
o Puntos de montaje de los sistemas de ficheros (MNT): gracias a estos
sistemas de nombres, un proceso aislado no ve nunca el sistema de
ficheros del host completo, sino que accede solo a una pequeña parte de
este, en general una imagen creada concretamente para este contenedor.

Aunque hasta la versión 0.8.1 el proceso de aislamiento de Docker se basaba en los
contenedores de Linux (LXC), la versión 0.9 ofrece un formato de contenedor desarrollado
por el mismo Docker conocido como Libcontainer. Este permite el uso multiplataforma de
Docker, así como la ejecución de un mismo contenedor en diferentes sistemas anfitriones.
Además, ofrece una versión de Docker para macOS y Windows.

Escalabilidad, alta disponibilidad y portabilidad
La tecnología de contenedores no solo se presenta como una alternativa para ahorrar
recursos frente a la virtualización de hardware tradicional, sino que permite
también instalar aplicaciones multiplataforma y en diferentes infraestructuras sin
necesidad de adaptarlos a la configuración específica de los sistemas de hardware y
software de cada sistema host.
Docker utiliza las denominadas imágenes como copias portables del software de
contenedores. Estas contienen las aplicaciones junto con todas las bibliotecas, los
archivos binarios y de configuración necesarios durante la ejecución de los procesos de
aplicación encapsulados. Por este motivo apenas requieren nada del sistema anfitrión, lo
que facilita el traspaso de un contenedor-aplicación entre diferentes sistemas operativos
Linux, Windows o macOS sin necesidad de ajustes, siempre y cuando la plataforma de
Docker se haya instalado como una capa de abstracción. Por todo ello, Docker se