Skip to main content

Creating LXD Container Profiles

Hands-On Lab

 

Photo of Elle Krout

Elle Krout

Content Team Lead in Content

Length

00:30:00

Difficulty

Beginner

A benefit of containers is the ability to create mass amounts of them in a short amount of time. LXD makes ensuring these containers all share the expected container-level instance configurations through the use of container profiles. In this hands-on lab, we will create a profile to use when deploying on a certain storage pool.

What are Hands-On Labs?

Hands-On Labs are scenario-based learning environments where learners can practice without consequences. Don't compromise a system or waste money on expensive downloads. Practice real-world skills without the real-world risk, no assembly required.

Creating LXD Container Profiles

Introduction

A benefit of containers is the ability to create mass amounts of them in a short amount of time. LXD makes ensuring these containers all share the expected container-level instance configurations through the use of container profiles. In this hands-on lab, we will create a profile to use when deploying on a certain storage pool.

The Scenario

As part of a move to LXD containers, you need to create a new profile specifically for database pools that will leverage the /dev/xvdg storage pool, dbs. We also want to ensure the following configuration settings are set for any containers launched with this profile:

  • boot.autostart.priority = 99
  • boot.stop.priority = 1
  • limits.disk.priority = 10
  • snapshots.schedule = 0 0 * * *

When finished, launch a test instance using the profile, then assign it to the existing db01 container.

Logging In

Use the credentials provided on the hands-on lab overview page, and log in as cloud_user.

Create a New Profile

Create new storage pool based on the default profile by copying the profile:

lxc profile copy default dbs

Update the Storage Pool

Edit the file so the appropriate storage pool is used when a container is deployed:

lxc profile edit dbs
config: {}
description: Default LXD profile
devices:
  eth0:
    name: eth0
    nictype: bridged
    parent: lxdbr0
    type: nic
  root:
    path: /
    pool: dbs
    type: disk
name: dbs
used_by: []

We can then continue by adding the other configurations into this file directly, or save and exit (:wq!)and set them via the CLI.

Change Instance Settings

Set the instance boot values using the CLI:

lxc profile set dbs boot.autostart.priority 99
lxc profile set dbs boot.stop.priority 1
lxc profile set dbs limits.disk.priority 10
lxc profile set dbs snapshots.schedule "0 0 * * *"

Confirm the changes:

lxc profile show dbs

Use Profile with Instances

Create a test image:

lxc launch alpine test -p dbs

Assign it to the existing db01 container, and remove any additional profiles:

lxc profile add db01 dbs
lxc profile remove db01 default

Conclusion

We have created a profile for all of our database containers, confirmed that it works, and assigned it to an existing db container. Congratulations!