¿Qué es la virtualización a nivel del sistema operativo (virtualización basada en contenedores)?

La otra respuesta es dar la diferencia entre virtualización y contenedorización.

Pero * creo * que la pregunta está relacionada con los contenedores del sistema frente a otros (como Docker).

Con estibador; Está diseñado para poner una aplicación (y todas sus dependencias y bibliotecas, etc.) en un contenedor. Separa los binarios y los coloca en un contenedor acoplable y los vincula con los servicios (de ahí el término micro servicios)

Pero hay otro tipo de contenedor: los contenedores del sistema (y es lo que LXC tenía originalmente en mente, creo).

Personalmente, recomiendo probar Proxmox, ya que tiene una gran interfaz gráfica de usuario de LXC y es ideal para contenedores de sistema.

Los contenedores del sistema le permiten contener un sistema operativo completo en 1 contenedor. Es más eficiente que la virtualización, ya que comparte el kernel de hosts y no realiza ninguna emulación de hardware, pero la principal diferencia con Docker es que si crea un contenedor de Ubuntu como un contenedor del sistema, todavía estaría ejecutando todo el núcleo de Ubuntu componentes como systemD.

En breve; puede usarlo para el 99.9% de los casos de uso para los que usaría KVM / VMware pero obtener una densidad significativamente mayor del host y con todos los otros beneficios que los contenedores pueden traer (aislamiento de otros contenedores, reglas de seguridad complejas, fácil de restaurar ) pero sin emulación de hardware ni ejecución de núcleos duplicados.

Bastante bien, ¿verdad?

Uso Proxmox para todas mis necesidades de contenedores de Linux y ya no virtualizo ninguna carga de trabajo. Puedo colocar casi 5 veces la cantidad de contenedores en el mismo hardware y mantener (si no mejorar) el rendimiento sobre sus antepasados ​​KVM.

Por lo general, cuando crea varias máquinas virtuales encima de un hipervisor (generalmente tipo 2), elige un sistema operativo diferente para cada una de las máquinas virtuales.

En cambio, en una tecnología basada en contenedores, ejecuta múltiples aplicaciones (con sus respectivas bibliotecas) en un único sistema operativo. Cada una de estas aplicaciones es gratuita para personalizar el sistema operativo. Cada una de esta capa personalizada se llama contenedor. Un ejemplo de esto sería Docker.

A la izquierda tiene un hiperv Tipo 2 típico y a la derecha hay un motor Docker.

Cada vez que toma un solo núcleo y ejecuta múltiples procesos aislados que parecen ser sistemas operativos separados para su aplicación o servicio, tiene virtualización del sistema operativo. Aquí hay una breve lista de algunas herramientas:

  • Docker (contenedor de aplicaciones / servicios, proceso único)
  • LXC (contenedor del sistema operativo, procesos múltiples)
  • Zonas de Solaris (contenedor del sistema operativo, procesos múltiples)
  • CoreOS Rocket (aplicación / contenedor de servicio, proceso único)

Una forma más de verlo que puede ayudar. Los contenedores del sistema operativo proporcionan aislamiento del espacio del usuario, es decir, cuando inicia sesión en un contenedor del sistema operativo, se siente como si hubiera iniciado sesión en un sistema operativo completo. Desde allí, puede ejecutar cualquier proceso que desee, configurar el shell, etc. Cualquier cosa que pueda hacer en un sistema operativo no virtualizado.