Skip to content

Background

Charly Tanner edited this page Aug 15, 2019 · 8 revisions

Containers

What are containers?

A container is a bundle of tools that provide a way to package an application’s code, configurations, and dependencies to run smoothly and reliability. Containers isolate software from its environment, allowing applications to be easily deployed across different environments and perform in a predictable manner.

What is the Difference Between Containers and Virtual Machines?

Similar to containers, virtual machines (VM) can be used to isolate applications but are, by comparison, considered "heavy". A VM required a host with a hypervisor to provide all of the resources necessary to run its operating system. Applications are installed on VMs much the same way they are installed on physical machines. Because a VM requires its own underlying Operating System it can take up a lot of system resources.

In comparison, with containers, you do not have to re-create the operating system as each container shares the host OS kernel and all associated binaries and libraries. A container manager provides access to the basic services of the underlying operating system where you can add whatever you need to the container to get your application running. Containers are designed to be lightweight and operate in environments alongside thousands of other containers on the same server. This allows for a server to run multiple workloads that are isolated and predictable without reproducing OS code.

Container Ecosystem

Where does OKD fit into this?

Origin Community Distribution of Kubernetes (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, deploy, manage, and scale multi-container applications all using a container platform such as OKD.

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 its dependencies and software, but not its storage as this keeps the container lightweight.

What If You Need to Store Data?

While some applications don't need to store data, many do. Think of a database, for example. Databases are meant to store data, imagine every time you restart your database container, all of the data is erased. Luckily, there is a simple, scalable solution available that we will explore in Step 2 of this workshop.

Clone this wiki locally