Containers, Containers, Containers

Featured image

Containers are set to be one the must have skills for developers in the next right now!, containers are here to stay and the question is, do you even Docker?

Prologue

Containers are similar to VMs, but since they have less strict isolation properties, they’re more lightweight. A container has its own filesystem, memory, CPU, etc, but they are decoupled from the infrastructure below, making them portable across different OSs and cloud environments.

In more extend terms, a container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.

Container images become containers at runtime and in the case of Docker containers - images become containers when they run on Docker Engine. Available for both Linux and Windows-based applications, containerized software will always run the same, regardless of the infrastructure. Containers isolate software from its environment and ensure that it works uniformly despite differences for instance between development and staging.

As you’ve just seen, containers are a great solution for running your apps but, in a real production environment, you’ve got to make sure there isn’t any downtime by managing your containers. An easy example of that would be a container going down and another one taking its place. Such a process is better handled by an automatic tool, and that’s exactly where Kubernetes comes in handy. But what is Kubernetes?

Kubernetes is a powerful open-source tool for managing containerized applications, making configuration and automation easier. The tool, originally developed by Google, aims to provide better ways to manage related components and services, distributed over several infra-structure.

In short, Kubernetes is a solution to run and manage containerized applications through a machine cluster. It’s a platform designed to completely manage the applications and services lifecycle using methods that provide predictability, scalability, and high-availability.

By making use of Kubernetes, you can define how your apps should be executed and how they can interact with other applications and the external world. You can scale your services up and down, run continuous updates and switch traffic between different versions of your apps, in order to test resources or rollback faulty deploys.

Conclusion

This was a very quick summary of what Docker and containers brings to the table, as well as why you might need a Container Orchestrator. To summit all up, if you are asked whay a container is, you should answer: A standardized unit of software.