‘What is Docker?’ was the first question that jumped on my mind (or jumps to anyone’s mind) when I first heard about it.
A docker is a platform built on sea used for loading and unloading of containers on ships.
Now apply this concept in computing and think of a platform built on computers and instead of handling physical containers, it handle application containers.
Docker is a Platform-as-a-Service (PaaS) software for developers and sysadmins to build, ship, and run distributed applications.
Docker is PaaS
If you have used Elastic Beanstalk from AWS or OpenShift from Red Hat you might be familiar with PaaS terminology, but if you haven’t then PaaS is a category of cloud computing services that provides a computing platform and a solution stack as a service.
If you are a java developer, then you might need Apache tomcat application server with a PostgreSQL database as a backend and some sort of storage to develop and publish your application.
A PHP developer, might need an Apache httpd with mod_php and MySQL backend, with some storage to develop and publish his applications.
Now let’s Dockerize
If you are a much more of DYI person, then docker is more likely your choice to experience with PaaS. It consists of 2 main components
Docker daemon runs on a host machine. The user does not directly interact with the daemon, but instead through the Docker client.
Docker client, in the form of the docker binary, is the primary user interface to Docker. It accepts commands from the user and communicates back and forth with a Docker daemon.
Docker hub is a Software-as-a-Service for sharing and managing containers, it is a public registry which provides a huge collection of images built by the community.
Docker Key Terms
Images are read-only templates which contains the base image of an OS. They are the build component of Docker. You can build your own images and share them over a private registry or you can download public images that other people have already created from the hub.
Since docker have the Client-Server model, it can run as a daemon in the background and bind itself to a socket waiting to serve requests of pushing and pulling images.
A typical scenario would be a company which decides to have it’s own private repository of images from which the users interact with it locally using this central private registry.
Containers are similar to a directory that holds everything needed for an application to run. They are the run component of Docker. Each container is created from an image. Containers can be run, started, stopped, moved, and deleted. Each container is an isolated and secure application platform.
Now that we know what Docker is, let’s have a practical introduction to Docker operations.