Hello to all the readers!
I am writing down about my learnings on docker. I have learnt docker in the past and used it but never thought to document my learning. I think it is very good to document our own learning of a subject that helps me and maybe you to understand it in a different manner apart from the vast Docker documentation library.
What is a container?
A container is a sandboxed process that runs on the host machine isolated from rest of the processes. It uses kernel namespace and cgroup feature to accomplish the isolation. A container is a running instance of an image.
Containers are different from hardware based virtualization. In hardware based virtualization, there is a hypervisor that runs the entire OS be it Windows or Linux and is really heavy and resource consuming. While container is lightweight and uses very less resources. Containers are portable and same image container can run on Windows, Mac or Linux.
Containers can run on physical machine or virtual machine.
What is an image?
An image contains everything needed to run the container. It contains configurations, scripts, binaries, all other dependencies.
What is Docker?
Finally, let us understand what is Docker. Docker is a platform that provides ability to package and run an application in an isolated environment called container.
It becomes really easy and fast for developers to develop the application and ship it with Docker.
Docker Architecture
Docker uses client-server architecture. The docker client and docker daemon can run on same machine or daemon can run on a different machine and client connects to it remotely. Client and daemon communicates using REST API over UNIX sockets or network interface.
Docker is written in Go programming language.
Docker daemon
Docker daemon “dockerd” is the daeomon that listens to API calls from client. It manages docker objects such as images, containers, networks, volumes.
Docker client
The actual user like us interacts not with the daemon but with the client “docker”. And client interacts with the daemon.
Docker registries
Registry stores the docker images. There are public and private docker repositories.