Docker Concepts: Deep Dive into Containerization


docker containerization

Docker’s impact on software development can’t be overstated; it provides the essential building blocks for streamlining the entire application lifecycle, from development to production.

What is docker?

Docker is an open platform designed to streamline the development, distribution, and execution of software applications. It allows applications to be shipped in a self-contained, isolated unit called a container.

missing

[Photo by Ian Taylor on Unsplash]

The building blocks of docker

Docker Daemon dockerd

The Docker daemon (dockerd) is the core of Docker. It’s a background process that runs on your computer and does the heavy lifting of Docker.
Think of it as the manager of your Docker world:

  • It listens for your commands: You talk to it through the Docker command-line interface (CLI).
  • It performs the actions: It builds images, starts and stops containers, manages networking, and handles image storage.

Docker Client

The Docker client is your way to control Docker. It’s the tool you use to type commands like docker build and docker run. These commands talk to the dockerd (which does the actual work).

Docker Desktop

Docker Desktop is a user-friendly application for your Windows or macOS computer that simplifies working with Docker. It provides the necessary tools (Docker Engine, Docker client, etc.) and a visual interface to manage your containers and images.

Docker Objects

Docker objects are the core elements that Docker operates on. They are listed below.

  • Images

    A Docker image is like a snapshot of your software’s environment. It contains everything needed to run your application in its own isolated space. Think of it as a recipe for creating identical containers.

  • Containers

    Container is a ready to use docker image. It is portable and can run consistently on different machines.

  • Networks

    Docker networks are virtual networks that enable communication between containers and with the outside world. These networks create isolated environments for your containerized applications.

  • Volumes

    Docker volumes are special storage areas designed for data persistence. They keep your important data safe even after a container stops, allowing easy sharing between containers and making backups simple.

  • Plugins

    Docker plugins are extensions for Docker’s functionalities. At the time of writing, Docker supports authorization, volume and network driver plugins.

Docker Registries

Docker registries are like libraries or warehouses for storing and distributing Docker containers. There are 2 types of registries; public (e.g. Docker Hub) registries and private registries.

Docker Architecture

All the components mentioned above interacts with each other in a server-client architecture that is depicted in the image below.

missing

Docker architecture [Image retrieved from Docker Docs website]

Embrace Docker for Modern Software Delivery

Docker has become synonymous with modern software development and deployment. By grasping its core concepts, you’ll unlock a world of portability, efficiency, and scalability within your applications.

Hands-on Docker

Looking to get your hands dirty using docker? Check the following articles:

References