Install, Create and Manage LXC in Ubuntu/Debian
Last updated
Last updated
https://www.tecmint.com/install-lxc-ubuntu-debian/
Over the last decade, the open-source community has seen a steady shift to containerization as the preferred way of deploying applications thanks to the numerous benefits it offers such as portability, flexibility, increased security, and easier management of applications. Popular containerization technologies include Docker, Podman, and LXD.
Written in Go language, LXD (pronounced as Lekseed) is described as the next generation system container and virtual machine manager that allows you to manage your containers and virtual machines from the command line, or by leveraging a REST API or other third party tools. LXD is an open-source project and is an extension of LXC (Linux Containers) which is OS-level virtualization technology.
LXC came into the picture around 2008, and LXD was launched 7 years later in 2015 with the same building blocks as LXC. LXD came to make containers more user-friendly and easy to manage.
Being an extension of LXC, LXD provides advanced features such as snapshots and live migration. It also provides a daemon that lets you easily manage containers and virtual machines. It is not intended to supplant LXC, rather, it is aimed at improving the usability and handling of LXC-based containers
In this guide, we will demonstrate how you can create and manage LXC containers using LXD on Debian/Ubuntu.
The first step is to install LXD. There are two ways of doing this, you can install from Ubuntu’s repository using the APT package manager or you can use snap.
Using APT, first update the system:
Then install the LXD system container hypervisor as follows.
Install LXD in Ubuntu
Using snap, you can install the latest version of LXD.
In addition, you can install the latest LTS release which is LXD 4.0 as follows:
You can verify the version of LXD installed as shown:
Check LXD Version
If you used to snap, you can verify that the LXD snap package was installed as shown:
List LXD Snap Package
To initialize or start the LXD container hypervisor, run the command:
The command presents you with a set of questions on how to configure LXD. The defaults work just fine, however, you are at liberty to specify your own settings as per your requirements.
In this example, we have created a storage pool called tecmint_pool with the ZFS file system and volume manager. For the rest of the questions, we have chosen to go with the default options. An easy way to accept the default selection is to press the ENTER button on your keyboard.
Initializing LXD Service
Confirm the information provided by running the command:
Confirm LXD Profile
You can further narrow it down to the storage pool created. The commands below display details of the current storage pools.
List LXD Storage Pools
You can also display information about the network interface in use by LXD, in this case, lxdbr0, which is the default selection.
List LXD Network Configuration
Now, let’s switch gears and create Linux containers. You can list all the prebuilt containers that are available for download using the command:
This populates a huge list of all the containers in various operating systems such as Ubuntu, CentOS, Debian, and AlmaLinux, to mention a few.
You can narrow it down to a specific distribution as follows:
In this example, we are listing the available containers.
Now, we are going to create our first container. The syntax for creating a container is as follows:
Now we are going to create two containers from Ubuntu 20 and Debian 10 respectively:
In the above examples, we have created two containers: tecmint-con1 and tecmint-con2.
To list the containers created, run the command:
From the output, we can see our two containers listed.
To gain shell access to a LXC container run the command:
Once you have gained shell access, notice that the prompt changes to indicate that you are running as the root user.
Access LXC Container Shell
To exit the container, run the command:
Now, let’s check out some of the commands you can use to manage LXD containers.
To list all the running containers, run the command:
To display detailed information about an LXC container, use the syntax:
This will provide you with information such as the container’s name, architecture, creation date, status network interfaces, bandwidth, CPU, memory, and disk usage to mention a few metrics.
Get LXC Container Info
To stop an LXC container, use the syntax:
For example, to stop container tecmint-con1, execute the command:
Again, list the containers to confirm that the container has been stopped.
Alternatively, you can list either running or stopped containers as follows:
To start an LXC container, use the syntax:
For example, to start container tecmint-con1 run the command:
You can start or stop containers bypassing them in one command separated by a space using the following syntax:
For example, to stop all containers, run:
To restart an LXC container, use the syntax:
For example, to restart container tecmint-con1 run the command:
Alternatively, you can pass multiple containers in a single command:
For example, to restart all containers, run:
To delete an LXC container, first, stop it, then delete it. For example, to delete container tecmint-con2, run the command:
This guide has provided you with a solid foundation about LXD containers and how you can launch, create and manage containers. It’s our hope that you can now comfortably launch and manage your containers without much difficulty.