Container and virtualization tools
linuxcontainers.org is the umbrella project behind LXD, LXC, LXCFS and distrobuilder.
The goal is to offer a distro and vendor neutral environment for the development of Linux container technologies.
Our focus is providing containers and virtual machines that run full Linux systems. While VMs supply a complete environment, system containers offer an environment as close as possible to the one you'd get from a VM, but without the overhead that comes with running a separate kernel and simulating all the hardware.
LXD is a next generation system container and virtual machine manager. It offers a unified user experience around full Linux systems running inside containers or virtual machines.
LXD is image based and provides images for a wide number of Linux distributions. It provides flexibility and scalability for various use cases, with support for different storage backends and network types and the option to install on hardware ranging from an individual laptop or cloud instance to a full server rack.
When using LXD, you can manage your instances (containers and VMs) with a simple command line tool, directly through the REST API or by using third-party tools and integrations. LXD implements a single REST API for both local and remote access.
LXC is a well-known Linux container runtime that consists of tools, templates, and library and language bindings. It's pretty low level, very flexible and covers just about every containment feature supported by the upstream kernel.
LXC provides the basic functionality used under the hood by LXD.
However, it should not be confused with the
CLI client tool provided by LXD.
LXCFS is a userspace (FUSE) filesystem which offers:
- Overlay files for cpuinfo, meminfo, stat and uptime.
- A cgroupfs compatible tree allowing unprivileged writes.
It's designed to work around the shortcomings of procfs, sysfs and cgroupfs by exporting files that match what a system container user would expect.
distrobuilder is an image building tool for LXC/LXD which offers:
- Complex image definition as a simple YAML document.
- Multiple output formats (chroot, LXD, LXC).
- Support for a lot of distributions and architectures.
distrobuilder's modern design utilises pre-built official images whenever available, uses a declarative image definition (YAML) and supports a variety of modifications on the base image.
CGManager is a cgroup manager daemon designed to allow nested unprivileged containers to be able to create and manage their cgroups through a DBus API.