What are some of the common containers solutions?????
OCI compliant products for creating containers
A container is not a virtual machine. A virtual machine is built by abstracting the necessary hardware resources to run a whole instance of an operating system. Afterwards, you can install your software on that instance. The problem with this model is that a lot of resources get wasted just to run the OS instance (not just the software application). When the software is run inside a container, it runs in an isolated environment that interfaces directly with the Linux kernel of the main OS (the one you are currently running). There is no need to install a totally new instance; this saves time and reduces costs.
Docker
Docker fills the gap between having to run a totally separate OS (like on a virtual machine) to run a software application, and to run that application on the same OS. It creates a lightweight level of virtualization using containers. It is an open-source, Linux-based software solution that can run on any hardware environment that supports Docker instances (Windows, Linux, OSX).
rkt
rkt – similar to Docker started by CoreOS. Intended to provide better security and more standards based implementation. CoreOS introduced Rkt in December of 2014. The core execution unit of rkt is the pod, a collection of one or more applications executing in a shared context (rkt's pods are synonymous with the concept in the Kubernetes orchestration system). rkt allows users to apply different configurations (like isolation parameters) at both pod-level and at the more granular per-application level. rkt's architecture means that each pod executes directly in the classic Unix process model (i.e. there is no central daemon), in a self-contained, isolated environment. rkt implements a modern, open, standard container format, the App Container (appc) spec, but can also execute other container images, like those created with Docker.
lxc and lxd
LXC was the first generation of the linux container solution. The next generation is LXD which includes a better experience, supported by a simple but powerful REST API. There are a number of linux distributions that are availalbe with pre-built lxd installs this includes Debian, Fedora, Alpine Linux and many others.
git
Git - Used as a source control and versioning tool. This helps track changes over time and provides a history if you wanted to revert back to a previous version. It is also useful if something breaks and you need to revert back!