
A non-programmer writes...
Re: "On Unix, the first program that runs after the kernel boots is init"
I seem to have met many of its human counterparts.
Containers are the cool toy meaning two things: new technology and hype. At heart, containers are simple: group the minimum set of files needed to run a particular program into a single directory tree, then run it with some kind of isolation mechanism, so that as far as that process is concerned, it's the only thing on the …
The only one you really need is LXD. Just ignore all the others, unless some outside influence forces you to muck with them. There is no point to Docker. LXD can do everything Docker can do, plus a whole lot more, with very little added overhead. And you get normal syslogging and all the other normal init management. You don't have to adopt a whole other way of operating inside the container.
LXD is just as useful as KVM or Xen, as long as you are just virtualizing linux inside linux - but with much less overhead.
FreeBSD has had jails since BSD 4.0. ZFS allows for write-on-copy, thin-cloning, snapshots and a ton of other features. FreeBSD has tools called ezjail and iocage as well as a few others, but unlike GNU/Linux, there is only one underlying technology, making it far more stable and widely compatible.
Oh, and I forgot to mention, it can run GNU as well.
https://wiki.freebsd.org/VIMAGE/Linux/CentOS55