{"id":1574,"date":"2022-03-14T08:32:28","date_gmt":"2022-03-14T08:32:28","guid":{"rendered":"https:\/\/middleware.io\/?p=1574"},"modified":"2023-08-11T07:33:47","modified_gmt":"2023-08-11T07:33:47","slug":"understanding-the-docker-ecosystem","status":"publish","type":"post","link":"https:\/\/stage-site.middleware.io\/ja\/understanding-the-docker-ecosystem\/","title":{"rendered":"Understanding the Docker ecosystem: A basic to advance guide"},"content":{"rendered":"\n<p>Developers rank Docker as the leading technology for containerization, and it\u2019s considered a &#8220;game-changer&#8221; in DevOps. Many large companies use Docker containers to manage their infrastructures, including Airbnb, Google, IBM, Microsoft, Amazon, and Nokia.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"716\" src=\"https:\/\/middleware.io\/backend\/wp-content\/uploads\/2022\/09\/Container-Statistics-1024x716.jpg\" alt=\"Container Statistics\" class=\"wp-image-2670\" srcset=\"https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/09\/Container-Statistics-1024x716.jpg 1024w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/09\/Container-Statistics-300x210.jpg 300w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/09\/Container-Statistics-768x537.jpg 768w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/09\/Container-Statistics-1200x839.jpg 1200w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/09\/Container-Statistics.jpg 1400w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>In the few years since its inception, the Docker ecosystem has quickly become <strong>the de-facto standard for <a href=\"https:\/\/middleware.io\/blog\/containerization\/\">managing containerized applications<\/a><\/strong>. For those new to the Docker ecosystem, it can be daunting to understand how it works and how to evolve with it. Let\u2019s help you get the basics out of the way first.<\/p>\n\n\n\n<div class=\"table-of-content\" id=\"accordian\">\n<div class=\"toc-heading\" data-toggle=\"collapse\" data-target=\"#toc\">\nTable of Contents\n<\/div>\n<div id=\"toc\" class=\"collapse\" data-parent=\"#accordian\">\n<div class=\"toc-list\">\n<\/div>\n<\/div>\n<\/div>\n\n\n<h2 id=\"h-docker-and-containerization\"><strong>Docker and containerization<\/strong><\/h2>\n<p><!-- \/wp:heading --><!-- wp:paragraph --><\/p>\n<p>Docker is a relatively new technology, but it\u2019s already well underway in DevOps. It provides developers and system administrators an open platform to deploy, manage, and run applications via containers. Each container is like a <strong>separate Linux system<\/strong>, so you have a complete operating system (OS) running within a single machine.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>A <a href=\"https:\/\/middleware.io\/blog\/containerization\/\">containerization<\/a> platform lets you quickly build, test, and deploy applications as portable, self-sufficient containers that can run virtually anywhere.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2673 size-large\" src=\"https:\/\/middleware.io\/backend\/wp-content\/uploads\/2022\/03\/Total-Market-revenue-of-Containers-1024x608.jpg\" alt=\"Total Market revenue of Containers\" width=\"580\" height=\"344\" srcset=\"https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Total-Market-revenue-of-Containers-1024x608.jpg 1024w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Total-Market-revenue-of-Containers-300x178.jpg 300w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Total-Market-revenue-of-Containers-768x456.jpg 768w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Total-Market-revenue-of-Containers-1200x712.jpg 1200w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Total-Market-revenue-of-Containers.jpg 1415w\" sizes=\"(max-width: 580px) 100vw, 580px\" \/><\/p>\n<p><!-- \/wp:paragraph --><!-- wp:image {\"id\":1579,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} --><\/p>\n<figure class=\"wp-block-image size-large\"><\/figure>\n<p><!-- \/wp:image --><!-- wp:paragraph --><\/p>\n<p>When learning more about Docker, images and containers pop up first. These two fundamental elements are critical to understanding the Docker ecosystem. So, what exactly are they?<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p><strong>An image<\/strong> is a read-only template that creates containers. It\u2019s a set of instructions that help run a container on the host operating system and is built using the \u201cbuild command\u201d.<\/p>\n<div class=\"container-cta small\">\n<h3>Monitor your containerized systems with Middleware.<\/h3>\n<p><a href=\"https:\/\/app.middleware.io\/auth\/register\/\" target=\"_blank\" rel=\"noopener\"><button class=\"primary white\">See it in action<\/button><\/a><\/p>\n<\/div>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>On the other hand, <strong>containers<\/strong> are runtime instances of an image. They run applications and software in an isolated environment. Containers are isolated and bundled with software, libraries, and configuration files and communicate through well-defined channels.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:heading {\"level\":3} --><\/p>\n<h3 id=\"h-how-do-images-and-containers-integrate-into-a-docker-ecosystem\">How do images and containers integrate into a Docker ecosystem?<\/h3>\n<p><!-- \/wp:heading --><!-- wp:paragraph --><\/p>\n<p>Images launch containers. However, an image isn\u2019t a container. Instead, it\u2019s a template of what the container looks like when it&#8217;s launched. As a result, you can <strong>use the same image multiple times <\/strong>without having to reconfigure each container.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>Dockerfile creates images. It\u2019s a script that describes what needs to be done to build an image successfully. Similar to any script, it contains instructions on how to perform specific tasks, as well as what information to use when performing those tasks.\u00a0<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>For example, Dockerfile can contain instructions for installing specific programs or downloading specific files from other servers.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2675 size-large\" src=\"https:\/\/middleware.io\/backend\/wp-content\/uploads\/2022\/03\/What-is-Dockerfile-1024x382.jpg\" alt=\"What is Dockerfile\" width=\"580\" height=\"216\" srcset=\"https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/What-is-Dockerfile-1024x382.jpg 1024w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/What-is-Dockerfile-300x112.jpg 300w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/What-is-Dockerfile-768x286.jpg 768w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/What-is-Dockerfile-1536x573.jpg 1536w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/What-is-Dockerfile-1200x448.jpg 1200w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/What-is-Dockerfile.jpg 1724w\" sizes=\"(max-width: 580px) 100vw, 580px\" \/><\/p>\n<p><!-- \/wp:paragraph --><!-- wp:image {\"id\":1580,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} --><\/p>\n<figure class=\"wp-block-image size-large\"><\/figure>\n<p><!-- \/wp:image --><!-- wp:paragraph --><\/p>\n<p>Dockerfiles parse line by line, so each instruction can be executed in order until an image is ready to use. The important thing about Docker images is that they use a layered file system. This means that adding a new layer of code doesn&#8217;t rewrite everything below it. Instead, it only writes what\u2019s changed, leaving the underlying layers intact and speeding up the process tremendously.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>You can think of an image as a snapshot or template for building Docker containers. Images include everything needed to run an application: the code or build, runtimes, dependencies, and any other necessary file system objects.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:heading --><\/p>\n<h2 id=\"h-docker-tools-and-components\">Docker tools and components\u00a0<\/h2>\n<p><!-- \/wp:heading --><!-- wp:paragraph --><\/p>\n<p>The Docker ecosystem includes many tools and elements that make it so useful for standardizing software development. Here are some of its important components.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:heading {\"level\":3} --><\/p>\n<h3 id=\"h-docker-client\">Docker client<\/h3>\n<p><!-- \/wp:heading --><!-- wp:paragraph --><\/p>\n<p><strong>Docker client<\/strong> is a \u201cGo\u201d program that acts as a client for the Docker daemon (the Docker engine). It runs on any machine, accepts commands from the user, and sends these commands to the Docker daemon. The daemon does the heavy lifting of building, running, and distributing Docker containers.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>By default, the Docker client interacts with a remote Docker daemon over TCP\/IP. However, you can also connect it to a local \u201cUnix socket\u201d or use \u201cSSH\u201d for a remote daemon.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>To interact with the daemon, you need to install the Docker client on your machine (Docker for Windows\/Mac), or you can use \u201cboot2docker\u201d for Mac\/Windows. On Linux systems, you can use the \u201capt-get\u201d or \u201cyum package manager\u201d to install it.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>The Docker command uses the Docker API. <strong>Docker [option] [command] [arguments] <\/strong>invokes this API<strong>.<\/strong> After the user types a command and presses Enter, the Docker client sends it to the Docker daemon. As you can see, the <strong>main component of the <a href=\"https:\/\/middleware.io\/product\/container-monitoring\/\">Docker environment<\/a> is the Docker client<\/strong>.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:heading {\"level\":3} --><\/p>\n<h3 id=\"h-docker-server\">Docker server<\/h3>\n<p><!-- \/wp:heading --><!-- wp:paragraph --><\/p>\n<p>A <strong>Docker server<\/strong> is a service that uses the Docker API to manage its containers. This is where the magic happens. It\u2019s a central place where containers are deployed \u2013 an abstraction from running applications.\u00a0<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>A Docker server is referred to as a &#8220;host,\u201d and each application container running on the host is called a &#8220;container&#8221;. Multiple containers can run concurrently on a single host. A common example of this is the <strong>Docker Hub Registry<\/strong>. It provides access to public images and enables collaboration between users in pushing and pulling images.\u00a0<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>Docker server offers a full development lifecycle to develop and run an application. It\u2019s similar to a <a href=\"https:\/\/middleware.io\/blog\/what-is-virtual-machine\/\">virtual machine<\/a> but uses the host kernel where a container is isolated from other containers, processes, and resources.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:heading {\"level\":3} --><\/p>\n<h3 id=\"h-docker-hub\">Docker Hub<\/h3>\n<p><!-- \/wp:heading --><!-- wp:paragraph --><\/p>\n<p><strong>Docker Hub <\/strong>is a cloud-based registry service that allows you to link to code repositories, build and test images, store manually pushed images, and link to Docker Cloud so you can deploy images to your hosts.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:image {\"id\":1581,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} --><\/p>\n<figure class=\"wp-block-image size-large\"><\/figure>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2677 size-large\" src=\"https:\/\/middleware.io\/backend\/wp-content\/uploads\/2022\/03\/Managed-Kubernetes-Service-Adoption-Statistics-1024x639.jpg\" alt=\"Managed Kubernetes Service Adoption Statistics\" width=\"580\" height=\"362\" srcset=\"https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Managed-Kubernetes-Service-Adoption-Statistics-1024x639.jpg 1024w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Managed-Kubernetes-Service-Adoption-Statistics-300x187.jpg 300w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Managed-Kubernetes-Service-Adoption-Statistics-768x480.jpg 768w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Managed-Kubernetes-Service-Adoption-Statistics-1536x959.jpg 1536w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Managed-Kubernetes-Service-Adoption-Statistics-1200x749.jpg 1200w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Managed-Kubernetes-Service-Adoption-Statistics.jpg 1608w\" sizes=\"(max-width: 580px) 100vw, 580px\" \/><\/p>\n<p><!-- \/wp:image --><!-- wp:paragraph --><\/p>\n<p>It\u2019s a centralized resource for container image discovery, distribution and change management, user and team collaboration, and workflow automation across the development pipeline.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>Here are some of Docker Hub\u2019s main features:<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:list --><\/p>\n<ul>\n<li><strong>Repositories:<\/strong> Push and pull container images<\/li>\n<li><strong>Teams and organizations:<\/strong> Manage access to private repositories of container images<\/li>\n<li><strong>Official images:<\/strong> Pull and use high-quality container images via Docker<\/li>\n<li><strong>Publisher images:<\/strong> Get and use high-quality container images from external providers. Publishers can be official organizations or individuals.<\/li>\n<\/ul>\n<p><!-- \/wp:list --><!-- wp:heading {\"level\":3} --><\/p>\n<h3 id=\"h-docker-engine\">Docker Engine<\/h3>\n<p><!-- \/wp:heading --><!-- wp:paragraph --><\/p>\n<p><strong>Docker Engine <\/strong>is an application that manages the entire container lifecycle from creating and storing images to running a container, network attachments, and so on. It can be deployed as a container or installed directly on the host machine.\u00a0<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>Docker Engine is a client-server application. Some of its main components are:<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:list --><\/p>\n<ul>\n<li><strong>Server:<\/strong> It\u2019s a type of long-running program also called a daemon process (the Docker command)<\/li>\n<li><strong>Command-line interface (CLI) client:<\/strong> The Docker command acts as a CLI client in the Docker ecosystem.<\/li>\n<li><strong>REST API:<\/strong> It determines interfaces programs can use to communicate with the daemon and tells the daemon what to do<\/li>\n<\/ul>\n<p><!-- \/wp:list --><!-- wp:paragraph --><\/p>\n<p>Docker Engine builds and runs containers using Docker&#8217;s components and services. It\u2019s a portable, lightweight runtime and packaging tool with infrastructure services to run applications.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:heading --><\/p>\n<h2 id=\"h-what-is-the-global-distribution-store-gds\"><strong>What is the Global Distribution Store (GDS)?<\/strong><\/h2>\n<p><!-- \/wp:heading --><!-- wp:paragraph --><\/p>\n<p><strong>Global Distribution Store (GDS<\/strong>) is a service for storing the images you want to distribute. These can be public or private and accessed by all Docker users or only specific users.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>The difference between a GDS and a local store is that an image must be downloaded as a whole to access it from a GDS, while with a local store, you can download only the image layers that are not on the existing system.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:image {\"id\":1582,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} --><\/p>\n<figure class=\"wp-block-image size-large\"><\/figure>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2679 size-large\" src=\"https:\/\/middleware.io\/backend\/wp-content\/uploads\/2022\/03\/Autoscaling-usage-over-time-by-organizations-1024x812.jpg\" alt=\"Autoscaling usage over time by organizations\" width=\"580\" height=\"460\" srcset=\"https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Autoscaling-usage-over-time-by-organizations-1024x812.jpg 1024w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Autoscaling-usage-over-time-by-organizations-300x238.jpg 300w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Autoscaling-usage-over-time-by-organizations-768x609.jpg 768w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Autoscaling-usage-over-time-by-organizations-1536x1218.jpg 1536w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Autoscaling-usage-over-time-by-organizations-2048x1625.jpg 2048w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Autoscaling-usage-over-time-by-organizations-1200x952.jpg 1200w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Autoscaling-usage-over-time-by-organizations-1980x1571.jpg 1980w\" sizes=\"(max-width: 580px) 100vw, 580px\" \/><\/p>\n<p><!-- \/wp:image --><!-- wp:paragraph --><\/p>\n<p>If you use Docker to run containers, you can use <strong>Docker Store<\/strong> for all the images you need. However, with Kubernetes or Rancher, you need to visit their respective websites to download the necessary images.<\/p>\n<div class=\"full-container-cta green\">\n<div class=\"d-flex\">\n<div class=\"img\"><img decoding=\"async\" src=\"\/images\/obse_cta.png\" alt=\"Observe content CTA\" \/><\/div>\n<div class=\"content-cta\">\n<h3>Identify which resources are down and needs to be replaced.<\/h3>\n<p><a href=\"https:\/\/app.middleware.io\/auth\/register\/\" target=\"_blank\" rel=\"noopener\"><button class=\"primary white arrow\">Get started<\/button><\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>This is where GDS comes into the picture. It&#8217;s a single place where you can store all the images of all the different technologies (Docker, Kubernetes, Rancher, etc.). A user can retrieve these images from a GDS instead of going to different websites for each technology.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:heading --><\/p>\n<h2 id=\"h-docker-and-service-discovery\"><strong>Docker and service discovery<\/strong><\/h2>\n<p><!-- \/wp:heading --><!-- wp:paragraph --><\/p>\n<p><strong>Service discovery<\/strong>, also called service registry, is a pattern to locate services for <a href=\"https:\/\/middleware.io\/blog\/round-robin-load-balancers\/\">load balancing<\/a> and failover of middleware applications. A service registry is often coupled with other functions such as monitoring and administration.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>With service discovery, each microservice instance registers when entering and deregisters when it leaves the cluster. The service registry uses a name to identify a service, called the &#8220;logical name&#8221;. Each logical name can be assigned to multiple physical services.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>Service discovery is one of the key tenets of a <a href=\"https:\/\/middleware.io\/blog\/microservices-architecture-docker\/\">microservice-based architecture<\/a>. You can achieve it in many ways, including:<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:list --><\/p>\n<ul>\n<li><strong>Using a service registry<\/strong> to register services and find relevant services through querying<\/li>\n<li><strong>Leveraging multicast DNS (mDNS <\/strong>to send service information to different network nodes<\/li>\n<li><strong>Using<\/strong> CNAME records in the Domain Name System (DNS)<\/li>\n<li><strong>Retrieving information<\/strong> from a Configuration Management Database (CMDB)<\/li>\n<\/ul>\n<p><!-- \/wp:list --><!-- wp:heading {\"level\":3} --><\/p>\n<h3 id=\"h-service-discovery-tools-and-the-docker-ecosystem\">Service discovery tools and the Docker ecosystem<\/h3>\n<p><!-- \/wp:heading --><!-- wp:paragraph --><\/p>\n<p><a href=\"https:\/\/middleware.io\/blog\/service-discovery\/\">Service discovery<\/a> tools are extremely important in the Docker ecosystem. They automatically detect network nodes and configure routing between them. The three most popular service discovery tools are:<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:list --><\/p>\n<ul>\n<li>Docker Swarm<\/li>\n<li>Kubernetes<\/li>\n<li>Mesos<\/li>\n<\/ul>\n<p><!-- \/wp:list --><!-- wp:paragraph --><\/p>\n<p>These tools automatically discover the services and containers deployed on the network by periodically polling the registries. The registrations, in this case, are dynamic, which means the tools update their data whenever the services or containers on the network change. They also automatically update the <a href=\"https:\/\/middleware.io\/blog\/cloud-load-balancing\/\">load balancers<\/a> with new information.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>You can find many service discovery tools on the market. Some of the popular ones are:<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:list --><\/p>\n<ul>\n<li><strong>Consul: <\/strong>Consul is a distributed, highly available, and data center-ready solution for connecting and configuring applications across dynamic, distributed infrastructures.<\/li>\n<li><strong>Etcd: <\/strong>The Etcd community provides a key-value store for common configuration and service discovery.<\/li>\n<li><strong>ZooKeeper:<\/strong> ZooKeeper is distributed configuration software for managing large numbers of hosts.<\/li>\n<\/ul>\n<p><!-- \/wp:list --><!-- wp:heading --><\/p>\n<h2 id=\"h-networking-tools-backed-by-docker\"><strong>Networking tools backed by Docker<\/strong><\/h2>\n<p><!-- \/wp:heading --><!-- wp:paragraph --><\/p>\n<p>As discussed earlier, Docker tools connect the containers to each other and the outside world. And this is what Docker networking is based on, a libnetwork that provides a &#8220;native implementation of Go&#8221; for networking.\u00a0<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>Libnetwork has a client\/server architecture, with the daemon running as a server and all other components as clients. The client libraries provide the API to manage and control the network.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2681 size-large\" src=\"https:\/\/middleware.io\/backend\/wp-content\/uploads\/2022\/03\/Top-Technologies-running-on-containers-1024x625.jpg\" alt=\"Top Technologies running on containers\" width=\"580\" height=\"354\" srcset=\"https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Top-Technologies-running-on-containers-1024x625.jpg 1024w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Top-Technologies-running-on-containers-300x183.jpg 300w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Top-Technologies-running-on-containers-768x469.jpg 768w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Top-Technologies-running-on-containers-1536x938.jpg 1536w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Top-Technologies-running-on-containers-1200x733.jpg 1200w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Top-Technologies-running-on-containers.jpg 1703w\" sizes=\"(max-width: 580px) 100vw, 580px\" \/><\/p>\n<p><!-- \/wp:paragraph --><!-- wp:image {\"id\":1583,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} --><\/p>\n<figure class=\"wp-block-image size-large\"><\/figure>\n<p><!-- \/wp:image --><!-- wp:paragraph --><\/p>\n<p>These tools help manage the network connections on a Docker host. Some network tools Docker supports are:<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:list --><\/p>\n<ul>\n<li><strong>docker0: <\/strong>The docker0 bridge is the default bridge network inside the Docker host. All containers running on the same host connect to this bridge network. The containers running on other hosts cannot communicate with this container unless they explicitly initiate communication.<\/li>\n<li><strong>Brctl: <\/strong>Linux Bridge Utilities is an optional tool that can help create and manage Linux virtual bridges. This tool sets up and manages container networks.<\/li>\n<\/ul>\n<p><!-- \/wp:list --><!-- wp:heading --><\/p>\n<h2 id=\"h-scheduling-cluster-management-and-orchestration\"><strong>Scheduling, cluster management, and orchestration<\/strong><\/h2>\n<p><!-- \/wp:heading --><!-- wp:paragraph --><\/p>\n<p><strong>Scheduling<\/strong> helps allocate container nodes for execution. The most basic scheduling algorithm simply assigns the next available container to the next available node. This approach works well in many situations. However, you may also require advanced algorithms in other instances.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>For example, if you have a web application with a front-end container and a back-end container running on different nodes, the back-end container should access the front-end container through its internal network address. More complex scheduling algorithms can consider the network dependencies of containers when deciding where to place them.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p><strong>Cluster management <\/strong>refers to how individual nodes within a cluster are managed and communicate with each other. It\u2019s an important process because it allows you to <strong><a href=\"https:\/\/middleware.io\/blog\/what-is-autoscaling\/\">autoscale your system<\/a><\/strong> as demand changes.\u00a0<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>For example, in a two-node system with dual demand, you can add another node without shutting down the system and ensure high availability at all times.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2683 size-large\" src=\"https:\/\/middleware.io\/backend\/wp-content\/uploads\/2022\/03\/Top-Container-images-running-on-K8-1024x696.jpg\" alt=\"Top Container images running on K8\" width=\"580\" height=\"394\" srcset=\"https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Top-Container-images-running-on-K8-1024x696.jpg 1024w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Top-Container-images-running-on-K8-300x204.jpg 300w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Top-Container-images-running-on-K8-768x522.jpg 768w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Top-Container-images-running-on-K8-1536x1045.jpg 1536w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Top-Container-images-running-on-K8-1200x816.jpg 1200w, https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Top-Container-images-running-on-K8.jpg 1563w\" sizes=\"(max-width: 580px) 100vw, 580px\" \/><\/p>\n<p><!-- \/wp:paragraph --><!-- wp:image {\"id\":1584,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} --><\/p>\n<figure class=\"wp-block-image size-large\"><\/figure>\n<p><!-- \/wp:image --><!-- wp:paragraph --><\/p>\n<p><a href=\"https:\/\/middleware.io\/blog\/what-is-container-orchestration\/\">Container Orchestration<\/a> is an automated process for provisioning, configuring, deploying, and managing software containers in container clusters. It monitors and manages container scheduling, clustering, and high availability while providing failover and scaling.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:heading --><\/p>\n<h2 id=\"h-benefits-of-using-docker\"><strong>Benefits of using Docker<\/strong><\/h2>\n<p><!-- \/wp:heading --><!-- wp:paragraph --><\/p>\n<p>Docker is inexpensive, easy to deploy, and offers increased development mobility and flexibility. Here are some major benefits of using Docker:<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:list --><\/p>\n<ul>\n<li>As an open-source tool, Docker <strong>automates deploying applications<\/strong> in software containers.<\/li>\n<li>It allows developers to <strong>package applications with all required parts<\/strong> like libraries and other dependencies and deploy them as one package.<\/li>\n<li>Docker helps developers <strong>create a container for each application<\/strong> and focus more on building it without having to worry about the operating system.<\/li>\n<li>Developers can easily <strong>move their software from one host to another <\/strong>using containers to deploy software. Containers are portable and self-contained.<\/li>\n<li>Containers are the standard for delivering microservices in the cloud. <a href=\"https:\/\/middleware.io\/blog\/microservices-architecture\/\">Microservices<\/a> are deployed in separate containers and use virtual networks when they need to communicate with each other. Each microservice container is isolated from the others, <strong>making debugging much easier<\/strong>.<\/li>\n<li><strong>Containers are easy to install and run <\/strong>because they don\u2019t require installing an application or runtime environment. All you need is a Docker container image running on a container platform such as Docker Engine or <a href=\"https:\/\/middleware.io\/blog\/kubernetes-challenges-and-solutions\/\" target=\"_blank\" rel=\"noreferrer noopener\">Kubernetes<\/a>.<\/li>\n<\/ul>\n<p><!-- \/wp:list --><!-- wp:heading {\"level\":3} --><\/p>\n<h3 id=\"h-is-docker-the-right-choice-for-you\">Is Docker the right choice for you?<\/h3>\n<p><!-- \/wp:heading --><!-- wp:paragraph --><\/p>\n<p>Docker is a promising platform that could rock the IT world and make life easier for many. If you&#8217;re considering adopting Docker, study the basics to understand its ecosystem. The more you learn, the better your decisions.\u00a0<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p><strong>Opt for a practical and viable solution like <a href=\"https:\/\/middleware.io\/\">Middleware<\/a> to understand and implement Docker on the go.<\/strong><\/p>","protected":false},"excerpt":{"rendered":"<p>Developers rank Docker as the leading technology for containerization, and it\u2019s considered a &#8220;game-changer&#8221; in DevOps. Many large companies use Docker containers to manage their infrastructures, including Airbnb, Google, IBM, Microsoft, Amazon, and Nokia. In the few years since its inception, the Docker ecosystem has quickly become the de-facto standard for managing containerized applications. For [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2685,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[487],"tags":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Understanding the Docker Ecosystem: A Basic to Advance Guide<\/title>\n<meta name=\"description\" content=\"Docker is a containerization platform, quickly gaining ground in DevOps as a one-stop solution for all development needs. Learn more about its ecosystem.\" \/>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Understanding the Docker Ecosystem: A Basic to Advance Guide\" \/>\n<meta property=\"og:description\" content=\"Docker is a containerization platform, quickly gaining ground in DevOps as a one-stop solution for all development needs. Learn more about its ecosystem.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/stage-site.middleware.io\/ja\/understanding-the-docker-ecosystem\/\" \/>\n<meta property=\"og:site_name\" content=\"Middleware\" \/>\n<meta property=\"article:published_time\" content=\"2022-03-14T08:32:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-11T07:33:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Docker-Ecosystem-A-basic-to-advance-guide-copy.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1300\" \/>\n\t<meta property=\"og:image:height\" content=\"700\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"MW Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"MW Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/stage-site.middleware.io\/ja\/understanding-the-docker-ecosystem\/\",\"url\":\"https:\/\/stage-site.middleware.io\/ja\/understanding-the-docker-ecosystem\/\",\"name\":\"Understanding the Docker Ecosystem: A Basic to Advance Guide\",\"isPartOf\":{\"@id\":\"https:\/\/stage-site.middleware.io\/ja\/#website\"},\"datePublished\":\"2022-03-14T08:32:28+00:00\",\"dateModified\":\"2023-08-11T07:33:47+00:00\",\"author\":{\"@id\":\"https:\/\/stage-site.middleware.io\/ja\/#\/schema\/person\/4ea1dce092ad60621e4fa874f02ccb92\"},\"description\":\"Docker is a containerization platform, quickly gaining ground in DevOps as a one-stop solution for all development needs. Learn more about its ecosystem.\",\"breadcrumb\":{\"@id\":\"https:\/\/stage-site.middleware.io\/ja\/understanding-the-docker-ecosystem\/#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/stage-site.middleware.io\/ja\/understanding-the-docker-ecosystem\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/stage-site.middleware.io\/ja\/understanding-the-docker-ecosystem\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/stage-site.middleware.io\/ja\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u77e5\u8b58\",\"item\":\"https:\/\/stage-site.middleware.io\/ja\/category\/%e7%9f%a5%e8%ad%98\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Understanding the Docker ecosystem: A basic to advance guide\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/stage-site.middleware.io\/ja\/#website\",\"url\":\"https:\/\/stage-site.middleware.io\/ja\/\",\"name\":\"Middleware\",\"description\":\"Observability platform\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/stage-site.middleware.io\/ja\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/stage-site.middleware.io\/ja\/#\/schema\/person\/4ea1dce092ad60621e4fa874f02ccb92\",\"name\":\"MW Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/stage-site.middleware.io\/ja\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/14ba28b020541bea7bc669595bdba058?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/14ba28b020541bea7bc669595bdba058?s=96&d=mm&r=g\",\"caption\":\"MW Team\"},\"sameAs\":[\"http:\/\/localhost\/melt\"],\"url\":\"https:\/\/stage-site.middleware.io\/ja\/author\/mittalmiddleware-io\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Understanding the Docker Ecosystem: A Basic to Advance Guide","description":"Docker is a containerization platform, quickly gaining ground in DevOps as a one-stop solution for all development needs. Learn more about its ecosystem.","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"ja_JP","og_type":"article","og_title":"Understanding the Docker Ecosystem: A Basic to Advance Guide","og_description":"Docker is a containerization platform, quickly gaining ground in DevOps as a one-stop solution for all development needs. Learn more about its ecosystem.","og_url":"https:\/\/stage-site.middleware.io\/ja\/understanding-the-docker-ecosystem\/","og_site_name":"Middleware","article_published_time":"2022-03-14T08:32:28+00:00","article_modified_time":"2023-08-11T07:33:47+00:00","og_image":[{"width":1300,"height":700,"url":"https:\/\/stage-site.middleware.io\/wp-content\/uploads\/2022\/03\/Docker-Ecosystem-A-basic-to-advance-guide-copy.jpeg","type":"image\/jpeg"}],"author":"MW Team","twitter_card":"summary_large_image","twitter_misc":{"\u57f7\u7b46\u8005":"MW Team","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/stage-site.middleware.io\/ja\/understanding-the-docker-ecosystem\/","url":"https:\/\/stage-site.middleware.io\/ja\/understanding-the-docker-ecosystem\/","name":"Understanding the Docker Ecosystem: A Basic to Advance Guide","isPartOf":{"@id":"https:\/\/stage-site.middleware.io\/ja\/#website"},"datePublished":"2022-03-14T08:32:28+00:00","dateModified":"2023-08-11T07:33:47+00:00","author":{"@id":"https:\/\/stage-site.middleware.io\/ja\/#\/schema\/person\/4ea1dce092ad60621e4fa874f02ccb92"},"description":"Docker is a containerization platform, quickly gaining ground in DevOps as a one-stop solution for all development needs. Learn more about its ecosystem.","breadcrumb":{"@id":"https:\/\/stage-site.middleware.io\/ja\/understanding-the-docker-ecosystem\/#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/stage-site.middleware.io\/ja\/understanding-the-docker-ecosystem\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/stage-site.middleware.io\/ja\/understanding-the-docker-ecosystem\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/stage-site.middleware.io\/ja\/"},{"@type":"ListItem","position":2,"name":"\u77e5\u8b58","item":"https:\/\/stage-site.middleware.io\/ja\/category\/%e7%9f%a5%e8%ad%98\/"},{"@type":"ListItem","position":3,"name":"Understanding the Docker ecosystem: A basic to advance guide"}]},{"@type":"WebSite","@id":"https:\/\/stage-site.middleware.io\/ja\/#website","url":"https:\/\/stage-site.middleware.io\/ja\/","name":"Middleware","description":"Observability platform","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/stage-site.middleware.io\/ja\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/stage-site.middleware.io\/ja\/#\/schema\/person\/4ea1dce092ad60621e4fa874f02ccb92","name":"MW Team","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/stage-site.middleware.io\/ja\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/14ba28b020541bea7bc669595bdba058?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/14ba28b020541bea7bc669595bdba058?s=96&d=mm&r=g","caption":"MW Team"},"sameAs":["http:\/\/localhost\/melt"],"url":"https:\/\/stage-site.middleware.io\/ja\/author\/mittalmiddleware-io\/"}]}},"_links":{"self":[{"href":"https:\/\/stage-site.middleware.io\/ja\/wp-json\/wp\/v2\/posts\/1574"}],"collection":[{"href":"https:\/\/stage-site.middleware.io\/ja\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stage-site.middleware.io\/ja\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/stage-site.middleware.io\/ja\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/stage-site.middleware.io\/ja\/wp-json\/wp\/v2\/comments?post=1574"}],"version-history":[{"count":13,"href":"https:\/\/stage-site.middleware.io\/ja\/wp-json\/wp\/v2\/posts\/1574\/revisions"}],"predecessor-version":[{"id":5875,"href":"https:\/\/stage-site.middleware.io\/ja\/wp-json\/wp\/v2\/posts\/1574\/revisions\/5875"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/stage-site.middleware.io\/ja\/wp-json\/wp\/v2\/media\/2685"}],"wp:attachment":[{"href":"https:\/\/stage-site.middleware.io\/ja\/wp-json\/wp\/v2\/media?parent=1574"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stage-site.middleware.io\/ja\/wp-json\/wp\/v2\/categories?post=1574"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stage-site.middleware.io\/ja\/wp-json\/wp\/v2\/tags?post=1574"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}