chapter two

2 Understanding containers

 

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, it’s okay to assign a dedicated virtual machine to each application and run each in its own operating system. But as the microservices become smaller and their numbers start to grow, you may not be able to afford to give each one its own VM if you want to keep your hardware costs low and not waste resources.

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 Kiada—the Kubernetes in Action Demo Application

2.2.1 Introducing the Kiada Suite

2.2.2 Building the application

2.2.3 Running the container

2.2.4 Distributing the container image

2.2.5 Stopping and deleting the container

2.3 Understanding containers

2.3.1 Using Namespaces to customize the environment of a process

2.3.2 Exploring the environment of a running container

2.3.3 Limiting a process’ resource usage with Linux Control Groups

2.3.4 Strengthening isolation between containers

2.4 Summary