Grid Guides

Explore How System On Grid Can Work For You

Grid Guide Topics

An Introduction to Common Components in Docker Ecosystem

Table Of Contents

    ## Table of Contents

    – [Introduction](#introduction
    – [What are Containers](#what-are-containers
    – [What is a Docker](#what-is-a-docker
    – [Service Discovery](#service-discovery
    – [Docker Swarm Mode](#docker-swarm-mode
    – [Networking Tools](#networking-tools
    – [Service, Scheduling, Cluster management, and Orchestration](#service-scheduling-cluster-management-and-orchestration
    – [Conclusion](#conclusion

    ## Introduction

    In traditional time, Developing of application and Distributing, deploying in a production environment is a complicated process. Due to this scenario, there are some hardships. To solve and serve these failures a docker is introduced.

    ## What are Containers

    Packaging components and their dependencies in a standardized and isolated lightweight process environment are called containers. Developing and deploying an application in a portable way is called containerization.

    ## What is a Docker

    Docker is defined as a tool and also a containerization platform developed to standardize and simply in various environments. Here a large amount of software is developed and created in the ecosystem.

    Main advantages of the docker are:

    ## Lightweight Resource Utilization
    Containers get isolated at every process level and use the kernel that there is no need to virtualize the entire environment.

    ## Portability
    Dependencies of a containerized application are stacked inside the
    container. So that it can run on any host.

    ## Predictability
    Host will not see about what is running in a container. The container will not see what is running inside a host.

    The above image describes how the container related to the host system and also tells how the individual applications use the operating system resources which are being abstracted by the docker.

    ## Service Discovery

    Service recovery is a strategy which makes it easy to perform deployments secure and scalable. This is done by figuring the details they need without any manual configuration given by the administrator.
    The services in the host will also register so that the remaining tools will also know about the availability. The diagram that is given below shows the how the application will register its connection with the discovery service system .after the application is being registered then the other tools will come to know the availability.

    The responsibilities that service discovery will handle:

    Agreeing and allowing the server to obtain and retrieve data to connect with the applications they require.
    Allowing services to register their connection information.
    To provide global accessible server location to configuration data.
    Storing information about the cluster members for the cluster management software.

    Service discovery tools :

    ## Etcd
    It is a service recovery and a globally distributed key-value store.
    ## Consul
    It is a service recovery and a globally distributed key-value store.
    ## Zookeeper
    It a service recovery and a globally distributed key-value store.
    ## Crypt
    It encrypts etcd entries.

    The below image shows how the application will register with the discovery system once it is being registered the applications can question about the connection to the application.

    ## Docker Swarm Mode

    Docker swarm are the nodes of the cluster which exists. One system can run on one or many nodes. These nodes are of two types of managers and workers. To deploy applications. User submits service information to the manager and then the manager will distribute these work tasks among the workers depending upon their availability.

    ## Networking Tools

    Docker provides the basic networking structures for the container to container and even container to host. Docker provides the networking mechanisms, the first kind of one is that expose the container ports and map with the host system. The other kind is a container to communicate with the docker and its links. The level of networking is only suitable for either a single host or jointly managed systems. There some additional networking capabilities or visions available with additional tools.

    The networking that should be simple and unique the space through the multiple hosts. VPN is adapted to communicate with various components.To establish macvlan information to communicate. Assign to per-host or per-application for subnetting. There are few projects which are involved in the docker networking are flannel, weave, pipework.

    ## Service, Scheduling, Cluster management, and Orchestration

    Every application is usually dependent on a different number of components. Let us take a simple example of an application is written or coded in python but it can be run on any device. while designing an application with the split up components within its docker into individual containers is also called “service oriented architecture”.

    The above image describes how the application will schedule and evaluate or will assign the available hosts and it will pull the information from discovery service.
    So according to the availability the new application will be allocated to least busy host.

    When a component is needed to build the container environment is called the scheduler. These schedulers are usually responsible for assigning containers on available hosts.

    Orchestration can be generally defined as the combination of scheduling and managing hosts. There are a few examples where they can be schedulers and managing tools.

    ## Fleet
    It can be scheduler and also a cluster management tool.
    ## Marathon
    It can be scheduler and also a service management tool.
    ## Swarm
    It can be a scheduler and a service management tool.
    ## Mesos
    It can be a host abstraction that will consolidate host resources for the scheduler.
    ## Kubernetes
    It is known for an advanced schedule which used for managing vast container groups.

    ## Conclusion

    Here, we understand that docker itself provides the software, design, deployment with the scalability. The containerization is helpful to make deploy applications simple.