whatisgithub

What is lxd?

canonical/lxd — explained in plain English

Analysis updated 2026-06-26

4,749GoAudience · ops devopsComplexity · 4/5Setup · moderate

In one sentence

Canonical's tool for creating and managing Linux containers and virtual machines from a single command-line interface and REST API, scaling from a single laptop to a multi-server cluster.

Mindmap

mindmap
  root((LXD))
    What it does
      Run containers
      Run VMs
      Manage clusters
    Access methods
      CLI tool
      REST API
      Go and Python SDK
    Integrations
      Ansible
      Terraform
      Packer
    Scale
      Single machine
      Multi-server cluster
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Spin up isolated Linux development environments on your laptop without dedicating a separate physical machine to each one.

USE CASE 2

Run a cluster of containers and VMs across multiple physical servers in a data center from a single management interface.

USE CASE 3

Manage container infrastructure with Ansible or Terraform using LXD's REST API and official integrations.

USE CASE 4

Test software across different Linux distributions by launching pre-built images for Ubuntu, Debian, and other distros.

What is it built with?

GoREST APISnapLinux

How does it compare?

canonical/lxdseldonio/seldon-coregooglecodelabs/tools
Stars4,7494,7484,751
LanguageGoGoGo
Setup difficultymoderatehardmoderate
Complexity4/55/52/5
Audienceops devopsdatadeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

LXD daemon only runs on Linux, the lxc client is available on Windows and macOS for remote management only, not local container hosting.

So what is it?

LXD is a tool for running and managing containers and virtual machines on Linux. A container is a way to run a complete Linux operating system in an isolated space on your computer without dedicating a full separate machine to it. Virtual machines do the same thing but with stronger isolation, using the hardware-level separation that your processor supports. LXD lets you create, start, stop, and configure both types from a single command-line tool and API. The project is developed by Canonical, the company behind Ubuntu. It is built around a REST API, meaning other software can talk to it over a network using standard web request patterns. This makes it possible to manage LXD from Ansible, Terraform, Packer, and similar tools that many operations teams already use. There are also official SDK packages for Go and Python if you want to build your own integrations. LXD scales from a single machine to a cluster of servers in a data center. On a single machine you might use it to keep different development environments isolated from each other. In a data center you might use it to run many workloads across a cluster of physical servers. Canonical offers long-term support releases that receive five years of updates, and commercial support is available through Ubuntu Pro. Installing on Linux is done through a Snap package with one command. A command-line client called lxc is available on Windows and macOS as well, though the main LXD daemon that runs containers only works on Linux. Pre-built system images are provided for Ubuntu and a range of other Linux distributions. The README includes a note on security: anything with access to LXD through its Unix socket has full administrative control, equivalent to root access on the host system. The project documentation recommends restricting that access and avoiding privileged containers unless there is a specific reason to use them.

Copy-paste prompts

Prompt 1
I want to run an isolated Ubuntu 22.04 development environment on my Linux machine using LXD. Show me how to install LXD via Snap, create a container, get a shell inside it, and expose a port to my host machine.
Prompt 2
Using the LXD Go SDK, write Go code that connects to a local LXD instance, lists all running containers, and prints each container's name, status, and IPv4 address.
Prompt 3
I want to use Ansible to manage LXD containers on a single host. Show me an Ansible playbook that creates three containers, installs nginx in each, and confirms each container is serving HTTP traffic.

Frequently asked questions

What is lxd?

Canonical's tool for creating and managing Linux containers and virtual machines from a single command-line interface and REST API, scaling from a single laptop to a multi-server cluster.

What language is lxd written in?

Mainly Go. The stack also includes Go, REST API, Snap.

How hard is lxd to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is lxd for?

Mainly ops devops.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.