Files
MarkdownNotes/LXC Cheatsheet.md
2023-04-26 15:42:07 -04:00

3.2 KiB
Raw Blame History

LXD/LXC cheat sheet

I've installed LXD on my home server and have found a lot of syntax and one-liners that I've yet to commit to memory. So I'll put them here.

Install LXD

snap install lxd  
sudo apt install -y git build-essential libssl-dev python3-venv python3-pip python3-dev zfsutils-linux bridge-utils

Install lxdMosaic

link

# Launch an ubuntu container
lxc launch ubuntu: lxdMosaic
# Connect to ubuntu console
lxc exec lxdMosaic bash
# Download the script
curl https://raw.githubusercontent.com/turtle0x1/LxdMosaic/master/examples/install_with_clone.sh >> installLxdMosaic.sh
# Then give the script execution permissions
chmod +x installLxdMosaic.sh
# Then execute the script
./installLxdMosaic.sh

Create zsf pool image file and add it to lxc

# bs = blocksize, count = number of blocks

# create the image file - 250GB
dd if=/dev/zero of=/mnt/data1/overlook-zfs-pool02 bs=1GB count=250
# Create the loop device (check `df -h` first for available names)
sudo losetup /dev/loop6 /mnt/data1/overlook-zfs-pool02
# Create zfs pool
sudo zpool create overlook-zfs-pool02 /dev/loop6
# View existing zpool list
zpool list
# Add new zpool to lxc storage
lxc storage create overlook-zfs-pool02 zfs source=overlook-zfs-pool02

How to move containers to a new storage pool on the same host

link

lxc stop container_name
lxc move container_name temp_container_name -s new_storage_pool
lxc move temp_container_name container_name
lxc start container_name

Changing existing containers to use the bridge profile

Suppose we have an existing container that was created with the default profile, and got the LXD NAT network. Can we switch it to use the bridge profile?

Here is the existing container.

lxc launch ubuntu:x mycontainer

Creating mycontainerStarting mycontainer

Lets assign mycontainer to use the new profile "bridgeprofile".

lxc profile assign mycontainer bridgeprofile

Now we just need to restart the networking in the container.

lxc exec mycontainer -- systemctl restart networking.service

/etc/netplan/ for containers

network:
    ethernets:
        eth0:
            addresses:
            - 192.168.0.206/24
            gateway4: 192.168.0.1
            nameservers:
              addresses: [ 1.1.1.1, 8.8.8.8 ]
    version: 2

backup (export) containers to a file

bdate=$(date +"%Y-%m-%d") && for ct in $(lxc list -c n --format csv); do lxc export $ct /mnt/data2/container-backup/$bdate-$ct.tgz; done

restore container from backup

lxc import <path>/<backup-archive>.tgz