In this article, you’ll learn how to install LXD on Debian to manage remote and locate Linux instances. Continue reading this tutorial to learn more about LXD.
LXD Container Manager
LXD Container and Virtual Machine Manager is a container management application to manage local or remote instances. In addition, it offers a simple CLI and REST API for container management. Apart from that, it uses images of various Linux distributions.
Here are some of the features of LXD Container Manager:
- Easy integrations with several deployment tools
- Lightweight containers which are secure by default
- A great alternative to virtual machines running Linux on Linux
- Use UEFI and secure-boot by default
- Can handle up to 50 LXD servers with the same APIs
Apart from these features, LXD containers can run unmodified versions of Debian, Arch, CentOS, Ubuntu, and many other Linux distributions. Furthermore, it can also mimic different cloud platforms, such as AWS, for deployment and testing purposes.
How to Install LXD on Debian
In this section, we’ll discuss the procedure for how to install LXD on Debian. We’ll cover both container and GUI virtual machines.
Update the Debian Machine
The first step is to update the machine using the APT package manager. Specifically, type:
sudo apt update
sudo apt upgrade
Output:

After that, reboot the machine. For example:
sudo reboot
Install Snap on Debian
Since LXD is not available as a part of the APT package format, you’ll install Snapd first. For this step, use the APT package manager to install Snapd. For instance, type:
sudo apt install snapd
Output:

After that, you’ll install snap core using the snap
command as shown below:
sudo snap install core
Next, you’ll add the /snap/bin
path in the $PATH
variable. Specifically, type:
export PATH=$PATH:/snap/bin
Install LXD on Debian
Once you’ve finished installing Snapd and snap core, you’ll now install LXD. For instance, type:
sudo snap install lxd
Wait for the installation to complete. To ensure that LXD has been installed successfully, type:
lxd --version
Or view the snap list to ensure the LXD installation:
snap list
The output should look something like this:

Next, execute the command given below to add ZFS support. ZFS is a zettabyte file management system that provides volume management along with file system support.
codename=$(lsb_release -cs);echo "deb http://deb.debian.org/debian $codename-backports main contrib non-free"|sudo tee -a /etc/apt/sources.list
Once done, update the system and install the following dependencies required for LXD:
sudo apt update
sudo apt install linux-headers-amd64
sudo apt install -t bullseye-backports zfsutils-linux
Add LXD to the User Group
Now, you’ll add the current user to the lxd group, so you don’t need the root privilege to run LXD. For this step, use the adduser
command. Specifically, type:
sudo adduser {USER-Name-Here} lxd
# add a regular user named sidrah to group lxd #
sudo adduser sidrah lxd
Furthermore, verify that the user has been added by using the grep
command or id
command. For instance, type:
id sidrah
grep '^lxd' /etc/group
Lastly, you’ll refresh the Linux group memberships as shown below:
newgrp lxd
id sidrah
Now, you can test the users with the lxc
command. For this step, type:
lxc list
Initialize LXD Server on Debian
To start the LXD server, type:
sudo lxd init
You’ll get a series of questions related to the LXD configuration:

For default options, press the “Enter” key. However, you can also specify your requirements.
To view the information related to the container, execute:
sudo lxc profile list
sudo lxc profile show default
The output should look like this:

In addition, you can also view the information related to the current storage pool as shown below:
sudo lxc storage list
sudo lxc storage show default
To view the network information of the LXD container, type:
sudo lxc network list
sudo lxc network show lxdbr0
Output:

View LXD Containers on Debian
Once you’ve completed the configuration, it is time to build the containers on LXD. Prebuilt containers are already present in the LXD repository. To view prebuilt images, type:
lxc image list images:
If you want to view a specific distribution image, pipe the grep
command after the lxc image
command. Specifically, type:
lxc image list images: | grep -i debian
lxc image list images: | grep -i centos
lxc image list images: alpine
You should get a similar output:

Similarly, you can also view several images followed by an “OR” (|) operator. For example:
lxc image list images: | grep -i -E 'centos|ubuntu|opensuse'
Create Containers Using LXD on Debian
Now, to create your first container, you’ll use the launch images
command. The syntax looks something like this:
sudo lxc launch images:{distro}/{version}/{arch} {container-name}
For instance, if you want to create a container for Ubuntu and Debian respectively, type:
sudo lxc launch images:ubuntu/focal distroid-con1
sudo lxc launch images:debian/10 distroid-con2
Output:

Here, you’ve created two containers: distroid-con1
and distroid-con2
respectively. You can also view the containers by executing this command:
sudo lxc list
Furthermore, you can also give shell access to your containers. For this step, type:
sudo lxc exec distroid-con1 bash
sudo lxc exec distroid-con2 bash
You’ll notice that the prompt changes once you’ve granted the shell access.
Get a Public Cloud Instance Using LXD
Similarly, you can also get a public cloud instance on your LXD container. For this step, launch the container for the particular distribution. The syntax for this command is:
lxc launch -t {type} {os/version} {container-name}
lxc launch -t {type} images:{os/version/arch} {container-name}
For instance, to create an EC2 instance with 1 CPU and 1024 GB RAM having Debian or Ubuntu image and titled as aws-dev-t2-micro-{ubuntu,debian}
, you’d type:
lxc launch -t t2.micro ubuntu:22.04 aws-dev-t2-micro-ubuntu
lxc launch -t t2.micro images:debian/11/amd64 aws-dev-t2-micro-debian
You can also verify the existence of containers from the lxc list. Specifically, type:
lxc list
To get the information of a particular cloud instance, use the info
command. For instance:
lxc info aws-dev-t2-micro-debian
To exit the container, type:
exit
Manage LXD Containers on Debian
Since you’ve learned how to install LXD on Debian, in this section, we’ll discuss some commands that you can use to manage LXD containers. First, to view the existing running LXD containers, type:
sudo lxc list
However, if you want to view the detailed information about a container, execute the command given below:
sudo lxc info container-name
Output:

Make sure to replace the container-name
with the container that you’ve created.
In addition, if you want to stop a container, use the stop
command. Specifically, type:
sudo lxc stop container-name
Again, you’ll have to replace the container-name
with your container name.
Furthermore, to view either the STOPPED
or RUNNING
container, you’ll use these flags. For instance:
sudo lxc list | grep -i STOPPED
sudo lxc list | grep -i RUNNING
You should get a similar output:

Apart from that, you can also manually start the LXC containers. For example, to start the distroid-con1
, type:
sudo lxc start distroid-con1
Final Thoughts
In this article, you learned how to install LXD on Debian 11. In addition, you also learned to set up and manage LXD Linux containers on Debian machines. For more information, check out the LXD guide.
If this guide helped you, please share it.