Containers Project (https://linuxcontainers.org) created a set of tools,
templates, and library and language bindings called LXC to make it easier to
use the containment features of the Linux kernel and manage containers. The
goal was to create an environment that comes as close as what one would
have in a virtual machine but without the overhead of running a separate
kernel and simulating all the hardware. The project is community based and
completely open source, and it has been highly successful.
The next step was to create a command-line tool to make it easier to manage
containers both locally and over a network. The Linux Containers Project
created a next-generation container manager, which it called LXD. LXD
builds on LXC, with an aim to improve the user experience.
In LXD, everything is image based, meaning an entire container is created,
configured, and then stored. Then you can deploy an image or multiple copies
of it, called instances, where you want to, knowing that all the instances are
internally identical.
LXD containers are system containers, meaning each LXD container includes
a full Linux system, exactly as it would if you were running it directly on a
physical system or from within a virtual machine. This is a boon for cloud
computing, especially when you want to automate the deployment of a large
set of virtual servers across a data center or in a public cloud.
While LXD was founded by and development has been led by Canonical, it is
open source, integrates with and runs on other Linux distributions, and has
images available for deploying instances of CentOS, RHEL, SUSE, Debian,
and others, along with Ubuntu instances.
We are not yet at the granular scale of “just the application and its runtime
environment.” That comes next.
Docker
The Docker platform confusingly shares its name with a company created
around a platform called Docker, Inc. The company supports and leads the
development of the platform, which has open source projects that feed into
the free Docker platform community edition and its for-payment enterprise
Docker platform product. From here on, assume that we are referring to the
Docker platform when we speak of Docker.
Docker is a container system with tools for building, deploying, and running
application containers. The containers are everything the idea promised.
With Docker, you create a container image that includes only an application