La empresa Canonical ha publicado la versión del conjunto de herramientas para la gestión de contenedores aislados LXC 5.0, que ofrece un runtime adecuado tanto para ejecutar contenedores con un entorno completo del sistema, similares a las máquinas virtuales, como para ejecutar contenedores no privilegiados de aplicaciones individuales (OCI). LXC es una herramienta de bajo nivel que opera a nivel de contenedores individuales. Para la gestión centralizada de contenedores desplegados en un clúster de varios servidores, se desarrolla el sistema LXD basado en LXC. La rama LXC 5.0 ha sido clasificada como lanzamientos con soporte a largo plazo, cuyos actualizaciones se generan durante 5 años. El código de LXC está escrito en C y se distribuye bajo la licencia GPLv2.
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. El aislamiento se realiza mediante los mecanismos estándar del núcleo de Linux. Para el aislamiento de procesos, pilas de red ipc, uts, identificadores de usuarios y puntos de montaje se utiliza el mecanismo de espacios de nombres (namespaces). Se utilizan cgroups para limitar los recursos. Para reducir los privilegios y restringir el acceso se implementan características del núcleo como perfiles de Apparmor y SELinux, políticas de Seccomp, Chroots (pivot_root) y capabilities.
Principales cambios:
- Se ha realizado la transición de autotools al sistema de construcción Meson, que también se utiliza para compilar proyectos como X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME y GTK.
- Se han añadido nuevas opciones para la configuración de cgroup — lxc.cgroup.dir.container, lxc.cgroup.dir.monitor, lxc.cgroup.dir.monitor.pivot y lxc.cgroup.dir.container.inner, que permiten definir explícitamente los caminos de cgroup para el contenedor, el proceso de monitoreo y las jerarquías anidadas de cgroup.
- Se ha añadido soporte para espacios de nombres de tiempo (time namespaces) para vincular a un contenedor un estado separado del reloj del sistema, permitiendo que el contenedor utilice su propio tiempo diferente al del sistema. Se han propuesto las opciones lxc.time.offset.boot y lxc.time.offset.monotonic para definir el desplazamiento con respecto a los relojes principales del sistema.
- Se ha implementado el soporte para VLAN en adaptadores ethernet virtuales (Veth). Se han propuesto opciones para gestionar VLAN: veth.vlan.id para establecer la VLAN principal y veth.vlan.tagged.id para enlazar VLAN etiquetadas adicionales.
- Se ha añadido la posibilidad de configurar el tamaño de las colas de recepción y transmisión para adaptadores ethernet virtuales mediante las nuevas opciones veth.n_rxqueues y veth.n_txqueues.
Fuente: opennet.ru
