# Beginners overview to basic devops concepts! 1. **Kernal** - Kernal is a piece of software in operating system which acts as a interface between hardware and the rest of the system. Kernal schedules the processes, manages devices etc. ![](https://i.imgur.com/oDQJJt3.png) 2. **Operating System** - The operating system boots and manages the user space. Here, processes run and interact with the kernal. ![](https://i.imgur.com/J5Lc0Hz.png) 3. **Virtual Machine** - A guest OS, guest kernal talks to the virtual hardware. A software known as hypervisor creates virtual hardware that is used by the guest OS. - **Example**: Running a virtualbox containing Linux on a windows machine. 4. **Container** - Independent and isolated processes. Processes have there independent namespaces. One process per container. 6. **Docker Container** - Collection of images and binaries together. 7. **Image** - Binary. Bunch of bits on a filesystem somewhere. Images are like screenshots. 0. Scratch 1. OS 2. apt-get 3. ssh 4. perl 8. **Orchestration** - Automation of tasks that run at the same time in a way that minimizes production issues and time to market. 9. **Kubernetes** - Kubernetes is an open source container management tool which automates container deployment, container (de)scaling and container load balancing. 10. **Pods in Kubernetes** - Atomic unit of scheduling. **NOTE** 1. A container is different from a virtual machine. 2. Unlike VM, it doesn't contain any hypervisor. It contains only the needed images. 3. Docker file is basically a starting point for the image. 4. Movement can take place between image and container as well. 5. Multiple docker container share same kernal. **-Example:** - Ubuntu, Fedora, SUSE etc share linux kernal. 6. VMs have complete isolation. Takes more time to boot. While, containers are lightweight, take less time to boot. 7. Image is used to create containers. 8. Containers run instances of one or more images. 9. Containers overcame the limitations of VM. It was difficult to scale VM. 10. Kubernetes would manage multiple docker containers. And, keep scaling descaling based on the traffic. **Example** 1. A base image containing the operating system. (It is just a file system and binaries. It is not like the operating system of guest machine as in VM.) 2. Another image can be for installing apt-get dependencies. **Container Drawbacks** 1. It is challenging to manage multiple containers. 2. Auto-scaling is not possible. 3. To overcome the limitations of docker containers. Kubernetes came in. 4. Even after scaling containers it gets difficult to manage. Containers need to talk to each other to host the application. 5. Distribution of traffic, how to do that? **Question?** 1. What are GCP, AWS, Openshift? - Cloud providers? 2. Build?