How to use LXD Containers on Ubuntu 20.04

Linux container virtualization (LXD) is similar to Virtual machines (e.g. KVM) but with more speed, efficiency and much lighter compared to virtual machines. LXD containers for OS like Ubuntu, Centos, Arch Linux, etc are easy to create. LXD uses the same Linux kernel which reduces the overhead of the addition of such kernels.

In this article, we will show the installation and configuration process of LXD on Ubuntu 20.04 server. Also, we will explain how to start an LXD container and how to run commands inside the container.

Install LXD on Ubuntu 20.04

To install LXD on Ubuntu 20.04 server, simply update the cache of the repository and install by using the apt package manager as shown below.

$ sudo apt update && sudo apt upgrade -y

Install the LXD with the command as shown below.

$ sudo apt install lxd -y

Or, install it with the use of snap commands.

$ sudo snap install lxd --channel=4.0/stable

Add user to the lxd group

It is recommended to add the user that you are currently logged in, in my case the user is named 'ubuntu' to the lxd group. This makes usage and maintenance of the LXC containers easier. Run the command as shown below for the purpose.

$ sudo adduser ubuntu lxd

Add your curent user to the LXD group

To verify if the user is added to the lxd group, run the command as shown below.

$ id

Check groups of the user

To install the zfs for the storage backend

As a storage backend, zfs filesystem is mostly used for the LXD. To install zfs, run the command as shown below.

$ sudo apt update
$ sudo apt install zfsutils-linux -y

To configure the LXD

To configure lxd on the Ubuntu 20.04 server, run the command as shown below with the use of the above zfs.

$ sudo lxd init

Initialize LXD

Get a list of available LXD container images

Simply, you are able to check the list of built-in LXD image, run the command as shown below

$ lxc image list images:
$ lxc image list images: | grep -i centos

For example, let's check the output of this command.

$ lxc image list images: | grep -i ubuntu

LXC Images

Create an LXD container

LXD containers are created with the use of lxc command. To do that, use lxc command with the image name or from the remote list. Check the remote list with the command as shown below.

$ lxc remote list

LXC remote list

To create the lxd container by using remote as ubuntu, run the command as shown below.

Syntax:

$ lxc launch ubuntu:20.04 container_name

Here, we are creating a container with the container name “test” with the operating system “ubuntu 20.04” by using the command as shown below.

$ lxc launch ubuntu:20.04 test

The container image will be downloaded and the cache of the image will be stored so the same image is used if needed again. You will see the output as shown below after the successful execution of the above command.

Output:

Create LXD container

To check the details of the container like name, state, ipv4 and ipv6 address, type and snapshots, run the command as shown below.

$ lxc ls

lxc ls

To run a command inside the container

After successfully creating the container, you are able to run commands inside it. It can be done either with a simple lxc command or by entering it bash. For further details, check the commands as shown below.

Syntax:

$ lxc exec container_name -- command

Example:

$ lxc exec test apt update

Run command in LXD container

For the bash shell, run the command as shown below.

Syntax:

$lxc exec container_name bash

Example:

$ lxc exec test bash

Execute command

To start, Stop and delete the LXD container

To start the LXD container, run the command as shown below.

$ lxc start container_name

Example:

$ lxc start test

Start container

To stop the LXD container, run the command as shown below.

$ lxc stop container_name

Example:

$ lxc stop test

Stop LXC container

To delete the LXD container, run the command as shown below.

$ lxc delete container_name

Example:

$ lxc delete test

Delete LXD Container

Conclusion

In this article, you have learned how to install and configure the LXD. I've also shown you the process of creating an lxd container and running commands through bash shell inside the container.