We will explore the syntax of managing LXC using PVE. Use commands that are commonly used by system administrators and cover the basics of creating, removing, and managing LXC in PVE.


What’s LXC?

LXC is a user space interface for the Linux kernel containment features. Through a powerful API and simple tools, it lets Linux users easily create and manage system or application containers.


Template Image

Creating an LXC in PVE is to download a template image. A template image is a preconfigured image of an operating system that can be used to create new LXC quickly.

The first step update container template database:

pveam update

List available images:

pveam available

Also filter the output:

pveam available --section system

The following command downloads a template image of an Ubuntu 22.04 operating system and saves it in the storage pool named “volume01”:

pveam download volume01 vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst

Listing Template Images To see a list of all the template images stored in the storage pool named “volume01,” use the following command:

pveam list volume01

NAME SIZE volume01:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst 123.81MB


Creating an LXC

Now that we have a template image, we can create a new LXC.

pct create 403 volume01:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst \
  --storage volume01 --rootfs volume=volume01:16 \
  --ostype ubuntu --arch amd64 --password P@ssw0rd --unprivileged 1 \
  --cores 2 --memory 1024 --swap 0 \
  --hostname lxc-ubuntu \
  --net0 name=eth0,bridge=vmbr0,ip=dhcp,firewall=1,type=veth \
  --start true

Configuring the LXC

ParameterDescription
pct createcreates a new LXC with ID 403 and the image from the storage “volume01.
--storage volume01specifies the storage pool to be used for storing the LXC’s disks.
--ostype ubuntu --arch amd64specify the operating system and architecture of the LXC.
--password P@ssw0rd --unprivileged 1set the root password for the LXC and enable unprivileged mode.
--cores 2 --memory 1024 --swap 0specify the number of CPU cores, amount of memory and swap space allocated to the LXC.
--hostname lxc-ubuntuThis option sets the hostname of the LXC to “lxc-ubuntu”.
--net0 name=eth0,bridge=vmbr0,ip=dhcp,firewall=1,type=veththe interface name set to eth0 and bridge to vmbr0 from the host, enable firewall and the network type value is: veth.
--start trueThis option starts the LXC after it has been created.

about veth

This type of network interface allows the LXC (container) or virtual machine to communicate with other devices on the network as if it were a physical device on the network. The veth interface also allows for network isolation between different LXC or virtual machines running on the same host system.


Launch a shell for the LXC

Enter the container:

pct enter 403

Update the system:

apt update && apt upgrade

Install some packages:

apt install -y curl git tmuxvim

Set Vim as default editor:

update-alternatives --set editor /usr/bin/vim.basic

Create user:

useradd -m user -s /bin/bash

Switch to user:

su - user

Cleaning up

Stop the LXC

pct stop 401

Destroying an LXC

To remove an LXC from the system, use the following command:

pct destroy 401 --purge

This command destroys the LXC with ID 401 and removes its configuration files from the system.

Removing a Template Image If you want to remove a template image from the storage pool, use the following command:

pveam remove volume01:vztmpl/vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst

Conclusion:

We covered the basics of managing LXC in Proxmox Virtual Environment (PVE).

Looked at how to download a template image, create an LXC, and configure it with various options. We also saw how to remove an LXC from the system.

PVE offers many more commands and options for managing LXCs, and we encourage you to explore them further to get the most out of this powerful virtualization platform.


Reference: