Day 16 : Docker for DevOps Engineers.

Day 16 : Docker for DevOps Engineers.

·

5 min read

Docker is an open-source platform for building, shipping, and running applications in containers. It was initially developed by Solomon Hykes in 2013 and later donated to the Linux Foundation in 2019. Docker provides a standardized method for packaging, deploying, and managing applications within isolated environments called containers. These containers ensure that applications run reliably and consistently regardless of the underlying infrastructure or operating system.

Docker was created by Solomon Hykes in 2010. Hykes was inspired by the way that shipping containers are used to transport goods all over the world. He wanted to create a similar way to package and ship software.

Problem solved by Docker

Docker solves several problems, including:

  • Portability: Docker containers can be run on any platform that has the Docker Engine installed, regardless of the underlying operating system. This makes it easy to deploy applications to different environments, such as production, staging, and development.

  • Reproducibility: Docker containers are always built from the same image, which means that they are always reproducible. This makes it easy to ensure that applications are deployed in a consistent state.

  • Efficiency: Docker containers share the underlying operating system kernel, which makes them more efficient than virtual machines. This means that you can run more containers on a single host machine than you could virtual machines.

Although both Docker and virtual machines (VMs) serve as methods for hosting applications, they differ in several key aspects:

  1. Resource Utilization: Docker containers consume fewer resources compared to VMs because they do not require a full operating system instance. This increased efficiency and scalability make Docker particularly suitable for resource-intensive applications.

  2. Performance: Due to the reduced overhead associated with launching a full operating system, Docker containers tend to be faster and deliver better performance for real-time applications.

  3. Flexibility: Docker offers greater flexibility than VMs by enabling finer-grained control over application dependencies and configurations. Additionally, Docker containers can be quickly spawned, stopped, and scaled according to changing business requirements. In contrast, VMs typically necessitate more manual intervention for configuration and management purposes.

  4. Portability: While both Docker and VMs support portability, Docker takes it a step further by enabling containers to be effortlessly transferred between different hosts and environments without requiring modifications.

FeatureDocker containersVirtual machines
PortabilityVery portableLess portable
ReproducibilityVery reproducibleLess reproducible
EfficiencyMore efficientLess efficient
Resource usageLighterHeavier
ComplexityLess complexMore complex

Docker comprises numerous components that cooperate to form a comprehensive platform for app development, deployment, and management. Key components include:

  • Docker Engine: The Docker Engine is the software that runs Docker containers. It is responsible for building, running, and managing containers.

  • Docker Hub: Docker Hub is a public registry for Docker images. It allows users to find, share, and download images.

  • Docker Images: Docker images are templates for creating Docker containers. They contain all of the necessary code, runtime, system tools, system libraries, and settings to run an application.

  • Docker Containers: Docker containers are isolated instances of Docker images. They are lightweight and portable, and they can be run on any platform that has the Docker Engine installed.

In conclusion, Docker is an innovative open-source technology that has transformed the way we construct, disseminate, and operate applications. Its lightweight, transportable, and scalable strategy for containerization has garnered widespread adoption among developers and enterprises alike. Understanding the roots of Docker, its relationship with virtual machines, and its constituent parts illuminates the breadth and potency of this powerful platform.


  • Use the docker run command to start a new container and interact with it through the command line. [Hint: docker run hello-world]

To start a new container from the nginx image, run the following command:

docker run -d -p 80:80 nginx

The -d flag tells Docker to run the container in detached mode, so that it will continue to run even after we close the terminal window. The -p 80:80 flag maps port 80 on the host machine to port 80 inside the container.

  • Use the docker inspect command to view detailed information about a container or image.

This will output a JSON object containing all of the information about the container, such as its ID, image name, status, network settings, and port mappings.

  • Use the docker port command to list the port mappings for a container.

This will output a list of all of the ports that are mapped between the container and the host machine.

  • Use the docker stats command to view resource usage statistics for one or more containers.

docker stats <container_name_or_id>

This will output a table of statistics, such as CPU usage, memory usage, and network traffic.

  • Use the docker top command to view the processes running inside a container.

This will output a list of all of the processes running inside the container, along with their PID, CPU usage, and memory usage.

  • Use the docker save command to save an image to a tar archive.

With docker save, you can export Docker images to a tar archive for sharing or backup purposes:

 docker save -o <output_file_name>.tar <image_name>

  • Use the docker load command to load an image from a tar archive.
docker load -i <input_file_name>.tar


In this blog post, I gave an introduction to Docker's world and performed some basic commands. The importance of Docker in DevOps cannot be understated. Keep experimenting and keep learning. Thank you for following until here.