Docker vs Kubernetes(K8s)

Containerization is a way of sharing parts of a single operating system among multiple isolated applications, as opposed to virtualization which will support multiple apps with their own OS on top of a single hypervisor. This means that where it can take minutes to spin up a virtual machine, it can take seconds to start a container because you aren't having to fire up the OS as well. This is beneficial for massive distributed applications with lots of discrete parts that need to be summoned, run, and then killed in short order. 

The interest in containers led to the formation of the OpenContainer Initiative (OCI) to define the standards of container runtime and image formats. The industry is also witnessing various implementations of containers, such as LXD by Canonical, rkt by CoreOS, Windows Containers by Microsoft, CRI-O by KubernetesIncubator project, and vSphereIntegrated Containers by VMware.

Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. With Docker, you can manage your infrastructure in the same ways you manage your applications. Docker provides the ability to package and run an application in a loosely isolated environment called a container. The isolation and security allow you to run many containers simultaneously on a given host. A Docker 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.

 
Kubernetes (K8s) is an open-source system for automating deployment, scaling, and management of containerized applications. It’s a container management platform designed to run enterprise-class, cloud-enabled and web-scalable IT workloads. It’s a Container Orchestration tool used mainly for provisioning containerized applications. Containers are microservices packaged with their dependencies and configurations. Kubernetes alternatives are Docker Swarm, Apache Mesos, OpenShift.

Docker vs Kubernetes: 

“Kubernetes vs Docker” is like comparing apples to oranges. One isn’t an alternative to the other, they are complementary to each other. Quite the contrary; Kubernetes can run without Docker and Docker can function without Kubernetes.

Docker is a standalone software that can be installed on any computer to run containerized applications. Containerization is an approach of running applications on an OS such that the application is isolated from the rest of the system. You create an illusion for your application that it is getting its very own OS instance(but shared same kernel as the host), although there may be other containers running on same system. Docker is what enables us to run, create and manage containers on a single operating system.

If you have Docker installed on a bunch of hosts (different operating systems), you can leverage Kubernetes. These nodes, or Docker hosts, can be bare-metal servers or virtual machines. Kubernetes can then allow you to automate container provisioning, networking, load-balancing, security and scaling across all these nodes from a single command line or dashboard. A collection of nodes that is managed by a single Kubernetes instance is referred to as a Kubernetes cluster.

Go is the programming language of the Cloud. A large part of tools for cloud (Docker, Kubernetes, Istio) written in Go language.

ref: 

Docker official website- https://www.docker.com/ 

Docker Documentation - https://docs.docker.com/ 

Docker Overview -
    1. https://docs.docker.com/engine/docker-overview/
    2. https://www.docker.com/resources/what-container
    3. https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux_atomic_host/7/html/overview_of_containers_in_red_hat_systems/introduction_to_linux_containers
    4. https://ericchiang.github.io/post/containers-from-scratch/


Kubernetes official website - https://kubernetes.io/ 

What is Kubernetes - https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/ 

Kubernetes basics - https://kubernetes.io/docs/tutorials/kubernetes-basics/ 

Kubernetes concepts - https://kubernetes.io/docs/concepts/

Kubernetes overview -
  1. https://thenewstack.io/kubernetes-an-overview/
  2. https://azure.microsoft.com/en-us/topic/what-is-kubernetes/?&OCID=AID2000586_SEM_uQFwC39m&lnkd=Google_Kubernetes_Nonbrand&MarinID=suQFwC39m_372584111946_%2Bkubernetes_b_c__75821059109_kwd-88228236663_
  3. https://justanotherdevblog.com/2017/02/22/kubernetes-an-overview-bf47b0af1865/
Why we use Go to develop Containerum platform for Kubernetes - https://medium.com/containerum/why-we-use-go-to-develop-containerum-platform-for-kubernetes-3a33d5bdc5ec