Getting Started with Docker

What is Docker?

Docker is software used by developers to develop, deploy, and run application programs on objects called containers. It implements system-level virtualization, which is also called "containerization", where the OS kernel offers a separate user-space instance aka “containers”, to deploy programs.

Let’s deep dive to understand what exactly are these Containers and how a Docker work. The containers are a bundle of application resources that provide a virtual platform for the programs to run. They resemble a real computer, for a program running on it; however, only a set of resources and devices will be assigned to them from the host OS Kernel. Only the programs running on them will be able to access these resources.

Multiple containers can simultaneously run on a host Kernel. Each container will be isolated completely from other containers on the Docker. This isolation enhances the usability of Docker, allowing multiple, independent programs to run on a Docker simultaneously.

Enhance your IT skills and proficiency by taking up the Docker Training Certification.

Dockers provide you with tools and platforms to manage the complete lifecycle of the containers. Owing to a number of advantages, Containerization has become very popular.

Table of Content - Getting Started with Docker
Features

➤ Components of Docker

➤ Docker Architecture

➤ Details of Docker Architecture

➤ Docker Machine

➤ Docker Installation

➤ Basic Docker Commands

➤ Docker for Developers

➤ Dockers for IT Operations

➤ Dockers for the Executive

➤ Enterprise Docker

Features

  • Flexible: Even the most complex programs can be containerized.
  • Lightweight: As it shares the host resources without a hypervisor(which is an overhead in case of Virtual Machine)
  • Interchangeable: You can install the new updates in a flash.
  • Portable: Platform dependency is absent. You can build locally and deploy on cloud and use it anywhere.
  • Scalable: You can replicate containers and distribute them.
  • Stackable: You can stack services.

MindMajix Youtube Channel

Components of Docker

Docker is typically made of the following 3 components:

Software

Docker is software that runs at system-level virtualization. In an environment like this, where operating systems are multitasking, a computer program called daemon will be running as a background process.

In Docker programming, dockerd represents the daemon, which manages the Docker containers. It listens to the containers via Docker engine API and performs instructions accordingly. The client program on Docker is called docker, which provides a command line interface for the users to instruct the Docker daemons.

Objects

An object in Docker is a bundle of all the entities required for the Docker to run an application. There are 3 main entities comprising objects. They are Containers, Images, and Services.

  • Images: Docker images are the read-only templates which are used to create containers.  An image is an executable file that encapsulates all the resources required to run an application, like the code, environment variables, runtime libraries, and configuration files. They, also help in application storage and shipping.
  • Containers: This is the runtime object of an image. It is what an image when active is called. It is basically the user space that allows the application to execute smoothly.
  • Service: Docker Service is a piece of program that performs a task across the network, like video streaming, fetching data, or posting data. It is capable of scaling the containers across multiple Docker Daemons and stacking them up. This yields to "swarm", a set of interactive daemons managed by a Docker API.
Related Article: Installing Docker To Mac, Windows, Oracle Linux 6 & 7 In Docker

Registries

Docker Registries are the repositories of the Docker images. Docker clients use the registries to push or pull the images. Access to the registry can be made public or private. There are 2 major public registries of Docker, Docker Cloud and Docker Hub.

Docker Hub is the default registry used by clients to upload or download images. Docker Cloud enables you to connect to the existing cloud infrastructure like AWS, Azure or connect to GitHub, where you can push all your repositories to obtain cloud access to the images.

Docker Architecture

Docker follows the Client-Server Model. The Docker client called docker will communicate with docker for various operations. Docker daemon (dockerd) is responsible for managing the containers and their distribution. The Docker Daemon and the Docker Client communicate with each other with the help of REST API over a network interface or over UNIX sockets.

 

docker-architecture

Details of Docker Architecture

Below is a brief introduction to each component of the architecture and the functionality associated with it. Each of the components contributes to the overall functioning of the Docker on a HOST.

The Docker Daemon

The Docker daemon is the mediator between the client, host, and the registries. It listens to the instructions from the Docker API. It manages the Docker objects, network, and volumes. It also communicates with other Docker daemons to handle the services across multiple daemons.

The Docker Client

The Docker client is the API through which the user interacts and instructs what has to be carried out on the application. For example, a simple command called docker run will execute the container program, where the daemon listens to the command, understands it, and executes the same. The Docker client can interact with more than one daemon.

The Docker Registries

Whenever a command like a docker run or docker pull is executed, a call is made to the registry to pull the corresponding images while the docker push command adds the image to the Docker registry. The call is generated by a client request to the Docker API. The API commands the Docker Daemon to service the request. This call is in turn made to the Repository to perform the action intended.

The Docker Containers

A container is an active image. It is generated from API by CLI instructions. A container can be moved, created, modified, run or deleted from the Docker. You can attach one or more networks, storage and other entities to a container. All the features of the container can be controlled, such as the level of isolation of its networks and storage from the other containers existing in the host system.

A container is defined just not by its image, but also the features adopted during its creation. While deleting a container, the changes made to its state will be deleted, if they are not stored in the persistent storage.

The Docker Images

These are the read-only components from which containers are created. You can either create Docker Image or use the existing images in the repository. In order to create an image, you have to create a Dockerfile with a simple syntax for defining the image of your requirement. Each command creates a layer in the image. If you change any instructions and rebuild, only those layers of the image will see the new changes.

The Docker Services

Services are mainly the containers in production. They are associated with scaling the containers across multiple daemons and managing them. This results in the swarm. Each swarm member is nothing but a daemon, which communicates and interacts with the remaining daemons through the docker API.

Docker service allows you to define the state required. For example, you can define the number of replicas of the service that needs to be available at a given point of time. By default, the services will be in the load-balanced state across all working daemons. Docker 1.12 and higher versions support swarm mode.

The Docker Files

When you want to build an image of your own, you instruct the Docker API to do so by writing a set of commands in Dockerfile. A Dockerfile contains all the possible commands that would build the required image automatically. The instruction, docker build, create an automated build that would execute several command-line instructions in succession.

Docker Machine

Docker machine is a tool that allows you to install and configure the Docker Engine on virtual hosts. It provides you with docker commands that help you manage the virtual hosts. You can use the Docker Machine to create the virtual hosts on your Mac, Windows, on cloud providers like Azure, AWS, or Digital Ocean or on your company network.

The docker commands will let you start, inspect, stop, and restart the virtual hosts. They also allow you to upgrade the Docker client and daemon. Initially, the Docker Machine was the only way to run the Docker on the Mac and Windows. However, post-Docker v1.12, native apps are available to run it on Mac and Windows.

Docker Installation

Installing Docker is a simple process. Depending on your system configuration and OS version, you can download the corresponding package from the official Docker website. Details of the same are given below:

In order to install the supported version on your OS, Please visit https://docs.docker.com/install/  

The above link guides you through the installation process.

Test the Docker Installation

Once you are done with the installation, run the following command, to verify if your Docker is installed with the latest version.

docker --version

In order to test run a sample project on your Docker, execute the following command:docker run hello-world 

This will download the simple hello-world image on your Docker.

To list the downloaded image, use the command:

docker image ls

This is a dry-run on your Docker to ensure that installation is done completely and your Docker is up and running. Now, you are all set to explore Docker more.

Basic Docker Commands

This is to help you with few basics commands to break the ice and get your hands get dirty on Docker.

Here is a list of few basic Docker commands:

  1. docker run – Runs the container (one or more).
  2. docker start – Starts the containers (one or more).
  3. docker stop – Stops the running containers (one or more).
  4. docker build – Builds an image from the Dockerfile.
  5. docker pull – Downloads an image from the registry.
  6. docker push – Uploads an image into the registry.
  7. docker export – Exports a container’s filesystem in tar format.
  8. docker exec – executes a command in a run-time container.
  9. docker search – Searches for images in Docker Hub.
  10. docker attach – Attaches to an active container.
  11. docker commit – Creates a new image from the Dockerfile.

Below displays a list of the uses and importance of Docker in different market areas. 

Docker for Developers

Docker, as software, is designed to enable both developers and system admins to work more efficiently. Hence it is made as a part of many DevOps toolchains. However, as a developer, all you need to know is how to execute and code certain command line instructions to develop your application and run it.

Docker is platform independent, and hence, you do not have to worry about the environment of support and deployment. There are already a number of applications up and running on Docker from where you can start to work. In order to start working, first, download Docker from the Docker official page.

Dockers for IT Operations

The lightweight dress of the Docker on the host is the most distinguishing point for Operations staff. It easily allows for the execution and management of different applications, simultaneously, in different isolated containers. This flexibility and reduced overhead, increase the efficiency of resource distribution in servers, leading to a lesser number of systems needed. This, in turn, reduces the cost.

Related Article: Interview Questions of Docker

Dockers for the Executive

Executives face the constant challenge of doing more with less in the ever-growing market. The demand to increase the output for a lesser number of resources and the reduced cost is what they are expected to deliver in every single business. In addition, adapting to the rapidly changing IT Landscape, Dockers come as the solution.

Docker uses containers as the packaging applications which render a much lighter and faster delivery model. It also allows for running multiple applications simultaneously, in different containers on a single host, irrespective of the host being VM or a physical machine. Besides, dockers also play a major role in DevOps, cloud strategy, and microservices.

Enterprise Docker

Docker Enterprise is carefully designed to provide an efficient container platform that manages the Enterprise demand of running business-critical applications, cutting-edge micro-services, and Big Data applications.

Docker Enterprise gives the flexibility to evolve your application to any infrastructure like the cloud services (AWS, Azure, etc.), any operating system, and any orchestrator like Swarm or Kubernetes to match the needs of your organization.

List Of MindMajix Docker Courses:

 Kubernetes Administration
 OpenShift
 Docker Kubernetes
 OpenShift Administration

 

Job Support Program

Online Work Support for your on-job roles.

jobservice

Our work-support plans provide precise options as per your project tasks. Whether you are a newbie or an experienced professional seeking assistance in completing project tasks, we are here with the following plans to meet your custom needs:

  • Pay Per Hour
  • Pay Per Week
  • Monthly
Learn MoreGet Job Support
Course Schedule
NameDates
Docker TrainingNov 23 to Dec 08View Details
Docker TrainingNov 26 to Dec 11View Details
Docker TrainingNov 30 to Dec 15View Details
Docker TrainingDec 03 to Dec 18View Details
Last updated: 28 Apr 2023
About Author

Vinod M is a Big data expert writer at Mindmajix and contributes in-depth articles on various Big Data Technologies. He also has experience in writing for Docker, Hadoop, Microservices, Commvault, and few BI tools. You can be in touch with him via LinkedIn and Twitter.

read less