2 Understanding Containers and Containerized Applications

 

This chapter covers

  • Understanding what a container is
  • Differences between containers and virtual machines
  • Creating, running, and sharing a container image with Docker
  • Linux kernel features that make containers possible

Kubernetes primarily manages applications that run in containers - so before you start exploring Kubernetes, you need to have a good understanding of what a container is. This chapter explains the basics of Linux containers that a typical Kubernetes user needs to know.

2.1 Introducing containers

In Chapter 1 you learned how different microservices running in the same operating system may require different, potentially conflicting versions of dynamically linked libraries or have different environment requirements.

When a system consists of a small number of applications or services, it’s okay to assign a dedicated virtual machine (VM) to each one and have it run in its own operating system. But for systems that run many applications, you may not be able to afford giving each one its own VM if you want to keep your hardware costs low.

2.1.1 Comparing containers to virtual machines

2.1.2 Introducing the Docker container platform

2.1.3 Installing Docker and running a Hello World container

2.1.4 Introducing the Open Container Initiative and Docker alternatives

2.2 Deploying the Kubernetes in Action Demo Application (Kiada)

2.2.1 Introducing the Kiada Application

2.2.2 Building the application

2.2.3 Running the container

2.2.4 Distributing the container image

2.2.5 Stopping, resuming, and deleting the container

2.3 Understanding containers

2.3.1 Customizing the process environment with Kernel Namespaces

2.3.2 Exploring the environment of a running container

2.3.3 Limiting the resources available to a process using cgroups

2.3.4 Strengthening isolation between containers

2.4 Summary