La empresa Canonical lanzamiento de herramientas para la organización del trabajo con contenedores aislados , gestor de contenedores y sistema de archivos virtual para simular en contenedores /proc, /sys y la representación virtualizada de cgroupfs para distribuciones sin soporte para espacios de nombres de cgroup. La rama 4.0 se clasifica como versiones con soporte a largo plazo, cuyas actualizaciones se generarán durante 5 años.
LXC es un runtime para ejecutar tanto contenedores del sistema como contenedores de aplicaciones individuales (OCI). LXC incluye la biblioteca liblxc, un conjunto de utilidades (lxc-create, lxc-start, lxc-stop, lxc-ls, etc.), plantillas para construir contenedores y un conjunto de bindings para varios lenguajes de programación. La aislamiento se lleva a cabo utilizando los mecanismos estándar del núcleo de Linux. Para la aislamiento de procesos, pila de red, ipc, uts, identificadores de usuario y puntos de montaje se utiliza el mecanismo de espacios de nombres (namespaces). Los recursos se limitan mediante cgroups. Para reducir privilegios y limitar el acceso se emplean características del núcleo como perfiles de Apparmor y SELinux, políticas Seccomp, Chroots (pivot_root) y capacidades. El código de LXC está escrito en C y se distribuye bajo la licencia GPLv2.
LXD es una capa sobre LXC, CRIU y QEMU, utilizada para la gestión centralizada de contenedores y máquinas virtuales en uno o varios servidores. Mientras que LXC es una herramienta de bajo nivel para manipular a nivel de contenedores individuales, LXD se implementa como un proceso en segundo plano que recibe solicitudes a través de una API REST, permitiendo crear configuraciones escalables desplegadas en un clúster de varios servidores.
Se admiten varios backends de almacenamiento (árbol de directorios, ZFS, Btrfs, LVM), instantáneas con corte de estado, migración en vivo de contenedores en funcionamiento de una máquina a otra y herramientas para la gestión de almacenamiento de imágenes. El código de LXD está escrito en Go y se distribuye bajo la licencia Apache 2.0.
Mejoras clave en LXC 4.0:
- El controlador para trabajar con cgroup se ha reescrito completamente. Se ha añadido soporte para la jerarquía unificada de cgroup (cgroup2). Se ha añadido funcionalidad al controlador freezer, que permite detener el funcionamiento en cgroup y liberar temporalmente algunos recursos (CPU, entrada/salida y potencialmente incluso memoria) para realizar otras tareas;
- Se ha implementado una infraestructura para interceptar llamadas al sistema;
- Se ha añadido soporte para la subestructura del núcleo 'pidfd', destinada a manejar situaciones de reutilización de PID (pidfd se vincula a un proceso específico y no cambia, mientras que el PID puede estar asociado a otro proceso después de que el proceso actual vinculado a ese PID haya finalizado);
- Se ha mejorado la creación y eliminación de dispositivos de red, así como su traslado entre espacios de nombres de la subestructura de red;
- Se ha implementado la posibilidad de mover dispositivos de red inalámbricos (nl80211) a contenedores.
Mejoras clave en LXD 4.0:
- Se ha añadido soporte para iniciar no solo contenedores, sino también máquinas virtuales;
- Para la segmentación de servidores LXD se ha propuesto el concepto de proyectos, que simplifica la gestión de grupos de contenedores y máquinas virtuales. Cada proyecto puede incluir su propio conjunto de contenedores, máquinas virtuales, imágenes, perfiles y secciones de almacenamiento. En relación con los proyectos, se pueden establecer sus propias restricciones y cambiar configuraciones;
- Se ha añadido soporte para la interceptación de llamadas al sistema para contenedores;
- Se ha implementado la creación de copias de seguridad de entornos y su restauración;
- Se ha asegurado la creación automatizada de instantáneas de entornos y secciones de almacenamiento, con la posibilidad de establecer un tiempo de vida de la instantánea;
- Se ha añadido una API para el monitoreo del estado de la red (lxc network info);
- Se ha añadido soporte para , sistema de archivos virtual para mapear puntos de montaje a espacios de nombres de identificadores de usuario (namespace de usuario);
- Se han propuesto nuevos tipos de adaptadores de red 'ipvlan' y 'routed';
- Se ha añadido un backend para usar almacenamiento basado en CephFS;
- Se ha implementado soporte para la replicación de imágenes y configuraciones multarquitectura para clústeres;
- Se ha añadido la posibilidad de gestión de acceso basado en roles (RBAC);
- Se ha añadido soporte para CGroup2;
- Se ha añadido la posibilidad de configurar la dirección MAC y definir la dirección de origen para NAT;
- Se ha añadido una API para gestionar las asignaciones en DHCP (leases);
- Se ha añadido soporte para Nftables.
Fuente: opennet.ru
