From the course: Docker Certified Associate (DCA) Cert Prep

Understand Docker

So, let us understand Docker. Let us understand how the software development worked when Docker wasn't there. We know that the software development requires involvement of different teams, like the development team, the testing team, and the operations team. Individual teams work in individual environments to accomplish their work. That is the key problem here. Their environments are different. Hence, the code developed does not behave the same in the different environments. Therefore, different issues arise due to separated way of installation and configuration of the systems used by different teams. So, what are the solutions available? How we can solve these problems? We have Virtualization and Containerization to solve the problems. The first solution for this problem came as Virtualization. In Virtualization, we create a virtual machine with its own CPU, memory and storage. The virtual machine functions as a virtual computer. No, to run the virtualization we need a hypervisor. A hypervisor is an application which enables us to segregate the hardware resources and provision them to a virtual machine. Let us understand virtual machines a little more. The hypervisor has its own tiny Linux based operating system. It gets installed on a physical hardware. Then it allows us to create virtual machines using the hypervisor. The virtual machines are fully isolated and work as an individual system. We can create multiple virtual machines on a single server. of virtualization, the host, the guest, and the virtualization layer. Let us understand individually. A host is the actual resource extracted from the bare metal using the hypervisor and behaves as an individual system. The guest is the operating system installed on top of the virtual machine, which supports requirements of your application and your application runs on it. The virtualization layer enables us to create different or similar environments where the guest OS will run. The other solution we have is container. Let us quickly understand what a container is. A container is a standard unit of software that packages up the code and all its dependencies so that the application runs quickly and reliably from one computing environment to another. Docker is an implementation of containerization. Docker is an open platform for developing, shipping, and running your applications. Docker enables you to separate your applications from your infrastructure so that you can deliver software quickly. With Docker, you can manage your infrastructure in the same way you manage your application. By taking advantage of Docker's methodologies for shipping, testing, and deploying code quickly, you can significantly reduce the delay writing code and running it in production. In both the solutions, as we have unified creation of different environments, the code will work as good as for both developers and testers.

Contents