In LXC and LXD there are system containers, which is one of the many types of containers. Another type is Docker, which is application containers.
A system container is like a virtual machine, but unlike a virtual machine it does not require hardware features from the CPU to perform the virtualization. In addition, a system container reuses your current running Linux kernel. Hence, you may be running Ubuntu on your host, and system containers for Ubuntu, Centos, AlpineLinux. All container will be running the runtime for the respective Linux distribution, but the kernel is the very same Ubuntu kernel that is running on the host.
System containers in Linux use security features in the Linux kernel to isolate the process tree of a Linux distribution, and make it behave as if it is another system inside your computer.
There are no system containers in Windows or OS/X. When you run LXD on Windows or OS/X, you are using a VM (like Hyper-V or VirtualBox) to run a Linux distribution, and inside there there is an installation of LXD to manage system containers.
The purpose of a system container is to run any Linux distribution, and in there it is up to you to install software and configure. The purpose of an application container is to supply a Dockerfile with instructions on how to setup the application that will be running in the container. Hence, it does not make much sense to run other runtimes in Docker since your goal is to get a specific application up and running.
From an educational standpoint, you can make your own Linux container (system or application) quite easily. See, for example, https://github.com/lizrice/containers-from-scratch which explains how to use cgroups and namespaces.