-
Notifications
You must be signed in to change notification settings - Fork 4
Background
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.
Similar to containers, virtual machines can be used to separate applications but are, by comparison, considered "heavy". Each VM requires its own underlying OS which can take up a lot of system resources. A virtual machine runs on a hypervisor which provides all of the resources necessary to run an operating system on which to install your applications.
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 where thousands allow servers to run multiple isolated, and predictable workloads without reproducing OS code.
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
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.
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 dependencies and software, but not its storage as this keeps the container lightweight.
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.