Run system containers with LXD
Fast, dense, and secure container and VM management at any scale
LXD provides a unified user experience for managing system containers and virtual machines. For more demanding workloads, LXD can be set up in a cluster environment to run containers, VMs, or a combination of the two on a set of machines. LXD has direct hardware access, minimising overhead and matching the density and efficiency of containers.
Why choose LXD?
Run a full Linux OS inside a container
LXD system containers run a complete filesystem with background processes. This allows you to run any workload, or containerise your traditional systems and apps without modifying the apps or your operations. LXD containers offer the density and efficiency of containers with a VM-like experience.
Cloud-like experience
LXD is image based, providing images for a large number of Linux distributions. It comes with a built-in image store that allows you to spin up a container or a VM in a matter of seconds. Existing integrations with various deployment and orchestration tools allow you to manage your infrastructure in a cloud-like way.
Secure and scalable
LXD runs unprivileged containers by default - protecting the host system from potential attacks. For virtual machines, LXD uses modern virtual hardware (VirtIO) exclusively. In addition, it utilises UEFI SecureBoot and provides vTPM support.
Resource restrictions through cgroups and ulimits, as well as RBAC, are also supported.
LXD is also easy to scale — from containers on your laptop to thousands of instances in the data centre.
Alternatives for running workloads
System containers
- To run a full Linux OS inside a container
- Utilises Kernel of the host
- Identical performance to bare metal
Virtual machines
- For workloads needing a different kernel or OS than the host
- Legacy free
- Cloud-like experience
Clusters for more demanding workloads
- Up to 50 servers in a unified cluster with 1000s of instances
- Run containers, VMs, or a combination of the two
- Same distributed database
- Managed uniformly
Want to know more? Watch this deep dive into LXD clustering
Key features
- Flexible resource limits (CPU, memory, network I/O, disk space, and some kernel resources)
- Advanced snapshot support, including scheduling and automatic expiry
- Projects for segmenting your LXD server, and easy multi-user setup for enhanced security
- Hardware passthrough (GPU, USB, NIC, disks, and more)
- Support for live-migration and stateful snapshotting
- Advanced networking support (OVN, SR-IOV, hardware acceleration support, ...)
- High availability clustering when combined with CEPH and OVN for storage and network redundancy
- LTS releases every two years - supported for five years
- Commercial support available through Ubuntu Advantage
Install LXD in 4 easy steps
-
Install LXD as a snap
If you are running Ubuntu 16.04 or later, just run:
snap install lxd
-
Configure LXD
Run the following command and either accept the defaults or choose different options when prompted:
lxd init
-
Install the OS you’d like to use in your container or VM
Container
Command:
lxc launch <image_server>:<image_name> <instance_name>
Example:
lxc launch ubuntu:22.04 ubuntu-container
VM
Command:
lxc launch <image_server>:<image_name> <instance_name> --vm
Example:
lxc launch ubuntu:22.04 ubuntu-container-vm --vm
Check the community image server for other Linux distributions.
-
Run commands
You now have your instance up and running! You’re all set to experiment with any commands you need.
Command:
lxc exec <instance_name> -- <command>
Example:
lxc exec ubuntu-container -- apt-get update
For a list of available commands and options, just run lxc
For other installation options, please check our documentation.
Join the LXD community
Enhance your experience with best-in-class open-source tools
Deploy workloads across different platforms with Juju
Juju makes it easy to deploy the exact same software on a variety of different platforms, including public and private cloud, bare metal, Kubernetes clusters. It is also a useful tool for local deployments, ideal for development.
For operating your instances using Juju please read this tutorial.
Easily manage bare metal infrastructure with MAAS and LXD
MAAS can automatically deploy and configure LXD as part of the deployment of a physical machine. Or it can be connected to an existing LXD deployment to dynamically create virtual machines on it.
To set up your own MAAS and LXD environment please read this tutorial.
Replace your VMware infrastructure with best-of-breed Open Source
Open Source brings cost savings, increased flexibility and higher quality for your infrastructure. Learn how to build a fully functional cloud infrastructure on Ubuntu while ensuring feature parity with VMware solutions.
Watch the "From VMware to open source" webinar to learn more.
Learn more about LXD
Learn the basics of LXD
Watch the webinar ›How to build a lightweight system container cluster
Download the whitepaper ›Run Kubernetes on LXD for edge computing
Watch the webinar ›