Systemd comes with a container solution. It started as an experiment around 2013, but in 2015 the main developer Lennart Poettering considered it as ready for production. It is in fact the base for another solution: Rkt.
Systemd-nspawn is not very well known, but it is a powerful solution that is available on every modern Linux system. It is built on top of the kernel namespaces and systemd for management. It's a sort of chroot on steroids.
Containers can be created using package managers such as yum and by extracting raw cloud images (several distributions provides such images, for instance https://cloud.centos.org/centos/7/images and https://cloud-images.ubuntu.com/). You can even use Docker images!
If you want to learn more about the underlying technologies of containers, systemd-nspawn is a good start. Here, every component is visible and can be configured...