Skip to content

Background

Charly Tanner edited this page Jul 29, 2019 · 8 revisions

This section will provide a little background on some of the underlying systems that enable OKD.

Containers

What are containers?

A container is just bundle of tools that an application needs to run. When running applications in containers all of their dependancies are included, they are given exactly what they need and nothing more. This allows the application to perform in a predictable manor no matter where it is deployed.

Difference Between Containers and Virtual Machines

A virtual machine can also be used to separate and application but virtual machines are by comparison "heavy". When you run a virtual machine you run them on a hypervisor which provides all of the resources necessary to run an operating system where you then install your applications.

With containers a container manager provides access to the basic services of the underlying operating system. You then add whatever you need to the container to get your application running.

The difference between the two being that with a container you don't have to recreate the whole operating system. Virtual machines have a lot more overhead and containers are designed to be lightweight and operate in environments where thousands of other containers are being used.

Container Ecosystem

Where does OKD fit into this?

OKD is a container platform responsible for automating the packaging and loading of containers. It is used to aid the development and deployment of containerized applications. You can build, host, delpoy, manage, and scale multi-container applications all using a container platform

What is Kubernetes?

Kubernetes is the container orchestrator used by OKD to manage containers in a clustered environment. Kubernetes helps keep applications running ensuring that the cluster's applications and resources remain highly available.

How do containers store data?

Containers are made to be spun up and torn down constantly. A container may be running on one machine for a time then be told to move to another by an orchestrator. The container will then be spun up again on the new machine and will keep all of its dependancies and software but not its storage. This is done on purpose to keep the container lightweight.

But What if you want to store data?

While some applications don't need to store data, many do. Think of a database for example, it would be terrible if every time your database container is restarted all of the data is erased. Luckily there is a simple scalable solution available for this problem. In Step 2 this will be covered in greater detail.

Clone this wiki locally