Prologo: (La virtualización a nivel de sistema operativo, también llamada virtualización basada en contenedores, contenerización o contenedorización, es un método de virtualización en el que, sobre el núcleo del sistema operativo, se ejecuta una capa de virtualización que permite que existan múltiples instancias aisladas de espacios de usuario, en lugar de solo uno. Tales instancias, las cuales son llamadas contenedores, contenedores de software, jaulas o prisiones, es un servidor real desde el punto de vista del usuarios. Al software que permite el alojamiento de distintos contenedores se le llama motor de contenedores) .
Contenerización
-. La Contenerización es la Virtualización-Nivel-Sistema-Operativo o Virtualización-Nivel-Aplicación sobre múltiples recursos de red para que las aplicaciones de software puedan ejecutarse en espacios de usuario aislados llamados contenedores en cualquier entorno, my-portatil, my-servidore locales o en la nube, independientemente del tipo de maquina. sistema-operativo o proveedor.
-. Los Contenedores son un entorno informático completamente funcional y portátil que rodea a la aplicación y la mantiene independiente de otros entornos que se ejecutan en paralelo. Individualmente, cada contenedor simula una aplicación de software diferente y ejecuta procesos aislados al agrupar dependencias, bibliotecas y archivos de configuración relacionados. Colectivamente, varios contenedores comparten un kernel de sistema operativo común.
Nota: Existen distintos tipos de implementaciones de contenedores, el motor mas usado para crear contenedores es Docker.
Que es Docker
-. Docker es un proyecto de código abierto que automatiza el despliegue de aplicaciones dentro de contenedores de software, proporcionando una capa adicional de abstracción y automatización de virtualización de aplicaciones en múltiples sistemas operativos. Docker utiliza características de aislamiento de recursos del kernel Linux, tales como cgroups y espacios de nombres (namespaces) para permitir que Contenedores independientes se ejecuten dentro de una sola instancia de Linux, evitando la sobrecarga de iniciar y mantener máquinas virtuales.
Nota: El soporte del kernel Linux para los espacios de nombres aísla la vista que tiene una aplicación de su entorno operativo, incluyendo árboles de proceso, red, ID de usuario y sistemas de archivos montados, mientras que los cgroups del kernel proporcionan aislamiento de recursos, incluyendo la CPU, la memoria, el bloque de E/S y de la red. Incluye la biblioteca libcontainer como su propia manera de utilizar directamente las facilidades de virtualización que ofrece el kernel Linux, además de utilizar las interfaces abstraídas de virtualización mediante libvirt, LXC (Linux Containers) y systemd-nspawn.
-. Docker implementa una API de alto nivel para proporcionar contenedores livianos que ejecutan procesos de manera aislada.
. Construido sobre las facilidades proporcionadas por el kernel Linux , un contenedor Docker, a diferencia de una máquina virtual, no requiere incluir un sistema operativo independiente. En su lugar, se basa en las funcionalidades del kernel y utiliza el aislamiento de recursos (CPU, la memoria, el bloque E / S, red, etc.) y namespaces separados para aislar la vista de una aplicación del sistema operativo. Docker accede a la virtualización del kernel Linux ya sea directamente a través de la biblioteca libcontainer o indirectamente a través de libvirt, LXC o systemd-nspawn.
-. El diagrama muestra la arquitectura de virtualización de Docker y cómo se relaciona con el kernel de Linux. Aquí está un análisis de los componentes principales:
- Docker: En la parte superior del diagrama, se muestra Docker como la plataforma principal de contenedorización.
- Tecnologías de aislamiento: Engendro n. / LXC (Contenedores Linux). / Libvirt. / Libreria de Contenedores. Estas tecnologías están representadas como componentes que se sitúan entre Docker y el kernel de Linux. Son herramientas y bibliotecas que Docker utiliza para implementar el aislamiento y la virtualización a nivel de sistema operativo.
- Kernel-Linux: En la base del diagrama, se encuentra el kernel de Linux, que es fundamental para el funcionamiento de Docker y las tecnologías de virtualización.
- Virtualización-Kernel-Linux: Esta etiqueta en la parte inferior sugiere que todo el proceso de virtualización se basa en las capacidades del kernel de Linux.
- Conexiones: Las flechas azules indican las relaciones y dependencias entre los componentes, mostrando cómo Docker utiliza estas tecnologías de aislamiento que, a su vez, interactúan con el kernel de Linux.
-. Este diagrama ilustra cómo Docker aprovecha varias tecnologías de virtualización y aislamiento basadas en Linux para proporcionar su funcionalidad de contenedorización. Libcontainer parece ser un componente clave, ya que tiene una conexión directa con Docker, sugiriendo que podría ser la interfaz principal que Docker utiliza para interactuar con el kernel de Linux.
-. Mediante el uso de contenedores, los recursos pueden ser aislados, los servicios restringidos, y se otorga a los procesos la capacidad de tener una visión casi completamente privada del sistema operativo con su propio identificador de espacio de proceso, la estructura del sistema de archivos, y las interfaces de red. Contenedores múltiples comparten el mismo núcleo, pero cada contenedor puede ser restringido a utilizar solo una cantidad definida de recursos como CPU, memoria y E / S.
Nota: Docker crear y gestionar contenedores y simplificar la creación de sistemas altamente distribuidos, permitiendo que múltiples aplicaciones estén operativas simultáneamente, y que los procesos funcionen de forma autónoma en una única máquina física o en varias máquinas virtuales.
Recopilando:
-. Veamos los puntos mas importantes de este post:
- La contenerización es una virtualización a nivel de sistema operativo que permite instancias aisladas de espacios de usuario.
- Los contenedores son entornos portátiles que aíslan aplicaciones y comparten el kernel del sistema operativo host.
- Docker es el motor de contenedores más popular, automatizando el despliegue de aplicaciones en contenedores.
- Utiliza características del kernel Linux como cgroups y namespaces para el aislamiento de recursos.
- Docker proporciona una API de alto nivel para gestionar contenedores ligeros sin necesidad de un SO completo por contenedor.
- La arquitectura de Docker se basa en tecnologías como LXC, libvirt y libcontainer.
- Permite aislar recursos, restringir servicios y dar una visión privada del sistema a los procesos.
- Facilita la creación de sistemas distribuidos con múltiples aplicaciones ejecutándose simultáneamente.
- Los contenedores comparten el mismo núcleo pero con recursos limitados y definidos.
- Docker simplifica la ejecución de procesos autónomos en una o varias máquinas aprovechando la virtualización del kernel Linux.
- Referencias: (Entorno-Moreluz)
- Referencias: Wikipedia