These scripts are useful to manage your own server, with several Linux containers.
- Either clone this code repository:
cd ~; git clone https://github.com/tpokorra/lxd-scripts.git scripts - You need to install these dependencies:
# For Ubuntu:
apt-get install snapd
snap install lxd
apt-get install lxc-utils cgroup-lite python3-lxc bsdmainutils cron patch debootstrap
# For Fedora:
dnf install lxd lxd-client lxc-utils gpg libvirt tar rsync net-tools debootstrap crontabs
- Or install a package from LBS: https://lbs.solidcharity.com/package/tpokorra/lbs/lxd-scripts
- There is a lxd-scripts package for Ubuntu 18.04 (Bionic) and Ubuntu 20.04 (Focal), and latest Fedora, with instructions how to install the package
- To make things easier, I usually create a symbolic link:
cd ~; ln -s /usr/share/lxd-scripts scripts
After installing the package, run these scripts for initializing the firewall and LXD:
/usr/share/lxd-scripts/initLXD.sh
/usr/share/lxd-scripts/initIPTables.sh
- Initialise the host IPTables so that they will be survive a reboot:
~/scripts/initIPTables.sh - Setup of LXD, and create ssh keys:
~/scripts/initLXD.sh - Create a container (with networking etc):
~/scripts/initFedora.sh $name $id - Call the script without parameters to see additional parameters, eg to specify the version of the OS etc:
~/scripts/initFedora.sh - There are scripts for creating Fedora, CentOS, Debian, and Ubuntu containers
- Containers are created in
/var/lib/lxd/containers/$name, see the directoryrootfs - or with the LXD snap, see
/var/snap/lxd/common/lxd/storage-pools/default/containers/ - Start a container:
lxc start $name - Start a container with console:
lxc console $name - Attach to the container:
lxc exec $name -- /bin/bash - Stop a container:
lxc stop $name - Destroy a container:
lxc delete $name - Enable Auto-start for a container:
lxc config set $name boot.autostart true - List all containers, with running state and IP address:
lxc list - alternatively, there is this script:
~/scripts/listcontainers.sh - this also shows the OS of the container
- ~/scripts/listcontainers.sh running: shows only running containers
- ~/scripts/listcontainers.sh stopped: shows only stopped containers
- Stop all containers:
~/scripts/stopall.sh - Take a snapshot of a container:
lxc snapshot $name clean - Restore a snapshot of a container:
lxc restore $name clean