I also use lxd to spin up machines for different purposes. In some cases a docker container is not really the best option for me, and lxd hits that sweet spot.
The latest releases also support full vm’s, if you ever do need it. It requires some extra configuration, but it’s not that hard. Here is the blog I followed when I tried it: https://blog.simos.info/how-to-use-virtual-machines-in-lxd/
I use systemd-nspawn a lot for the same purpose, spawn a process in its own namespace from a directory and use it to build something, add different root filesystem or networks as you need and eventually if I really need it add it as a service.