CHAPTER 32
Containers and Ubuntu
IN THIS CHAPTER
LXC and LXD
Docker
Kubernetes
CoreOS and Canonical
References
The latest trend in cloud computing is containers. The easiest way to define
containers is to begin with a comparison. Virtualization, which is described in
Chapter 30, “Virtualization on Ubuntu,” enabled us to end our dependence on
physical hardware when we need a new server; thanks to virtualization, we
can instead create servers as virtual machines that can be moved across
physical machines or parts of physical machines. Similarly, containers allow
us to replicate the software components needed to run specific processes or
programs. This is a much faster and smaller subset of software than
virtualization requires.
A container packages an application and the application’s entire runtime
environment—all the files and dependencies needed for the application to run.
Containers can be large or small, depending on the use case and the software
involved. Processes that run in a container are isolated from the rest of the
system on which the container is running. This provides a level of security as
well as extreme portability.
A trend in enterprise computing today that must not be ignored is the move to
a microservice architecture. Microservice architecture attempts to modularize
software system code into discrete chunks that can be easily replaced,
updated, and replicated. The overall system is a collection of loosely coupled
small (micro) services. The microservices are independently deployable and
communicate with each other using a clearly defined mechanism, which may