

{"id":37739,"date":"2018-11-25T13:20:22","date_gmt":"2018-11-25T07:50:22","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=37739"},"modified":"2018-11-25T13:20:22","modified_gmt":"2018-11-25T07:50:22","slug":"docker-architecture","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/docker-architecture\/","title":{"rendered":"Docker Architecture | How Docker Works &#8211; Host, Client, &amp; Registries"},"content":{"rendered":"<p><span style=\"font-weight: 400\">Today, we will see Docker architecture to understand its working well. Also, we will see the brief <strong>description of Docker<\/strong> objects such as images, containers etc. However, to understand about Docker architecture well, it is must to know about Docker first.\u00a0<\/span><\/p>\n<p>So, let&#8217;s start tutorial &#8211; <em>Docker Architecture<\/em>.<\/p>\n<h2><span style=\"font-weight: 400\">What is Docker?<\/span><\/h2>\n<p><span style=\"font-weight: 400\">Simply put, a tool which is designed to make it easier to create, deploy, and run applications by using containers is what we call <em>Docker<\/em>. It is an open platform for developing, shipping, as well as running applications. <\/span><\/p>\n<p><span style=\"font-weight: 400\">As its best feature, it enables us to separate our applications from our infrastructure so delivering software quickly will become easy. Moreover, usage of Docker helps to manage the infrastructure easily and in the same ways, one manages their applications.<\/span><\/p>\n<div id=\"attachment_37754\" style=\"width: 1212px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/10\/Docker-Architecture-vol.1-01.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-37754\" class=\"size-full wp-image-37754\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/10\/Docker-Architecture-vol.1-01.jpg\" alt=\"Docker Architecture - Host, Client, &amp; registries | How Docker Works\" width=\"1202\" height=\"630\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/10\/Docker-Architecture-vol.1-01.jpg 1202w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/10\/Docker-Architecture-vol.1-01-150x79.jpg 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/10\/Docker-Architecture-vol.1-01-300x157.jpg 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/10\/Docker-Architecture-vol.1-01-768x403.jpg 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/10\/Docker-Architecture-vol.1-01-1024x537.jpg 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/10\/Docker-Architecture-vol.1-01-520x273.jpg 520w\" sizes=\"auto, (max-width: 1202px) 100vw, 1202px\" \/><\/a><p id=\"caption-attachment-37754\" class=\"wp-caption-text\">Docker Architecture &#8211; Host, Client, &amp; Registry<\/p><\/div>\n<h2><span style=\"font-weight: 400\">Docker Architecture<\/span><\/h2>\n<p><span style=\"font-weight: 400\">While it comes to Docker architecture, it uses a client-server architecture. And, its architecture consists of 3 major parts, such as:<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400\"> Docker Host<\/span><\/li>\n<li><span style=\"font-weight: 400\"> Docker Client<\/span><\/li>\n<li><span style=\"font-weight: 400\"> Registry<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">At very first, Docker client talks to the Docker daemon, which performs the heavy lifting of the building, running, as well as distributing of our Docker containers. Basically, both the Docker client and daemon can run on the same system or we can connect a Docker client to a remote Docker daemon. <\/span><\/p>\n<p><span style=\"font-weight: 400\">In addition, by using a REST API, the Docker client and daemon communicates, over UNIX sockets or a network interface. Now, let\u2019s learn about all three components of Docker Architecture in detail:<\/span><\/p>\n<h3><span style=\"font-weight: 400\">i. Docker Host<\/span><\/h3>\n<p><span style=\"font-weight: 400\">Basically, a Docker Host runs the<em> Docker Daemon<\/em>. As its job role, the daemon listens for Docker API requests such as \u2018docker run\u2019, \u2018docker builds\u2019, anything and also manages Docker objects like images, containers, networks, etc. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Moreover, one daemon can easily communicate with other daemons in order to manage Docker services.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">ii. Docker Client<\/span><\/h3>\n<p><span style=\"font-weight: 400\">Here, the Client is nothing but the primary way by which many Docker users interact with Docker.<\/span><\/p>\n<p><span style=\"font-weight: 400\"> While we use various commands like (docker build, docker run, etc) the Docker client sends these commands to the Docker Daemon, which carries them out. One of the best features of Docker client is, it can easily communicate with more than one daemon.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">iii. Docker Registries<\/span><\/h3>\n<p><span style=\"font-weight: 400\">A stateless, highly scalable server-side application, which stores and lets us distribute Docker images is what we call the Registry. There is a flexibility that either we can create our own image or we can use public registries such as <strong>Docker Hub<\/strong> and Docker Cloud. <\/span><\/p>\n<p><span style=\"font-weight: 400\">By default, Docker is configured to look for images on one of its public registries \u201cDocker Hub\u201d. One of the advantages it offers is we can create our own registry as well.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Hence, while we run the docker pull or docker run command, it is possible to pull the required images from our configured registry. Basically, our image is pushed to our configured registry, while we use the docker push command.<\/span><\/p>\n<h2><span style=\"font-weight: 400\">Docker Objects<\/span><\/h2>\n<p><span style=\"font-weight: 400\">There are several objects we create as well as use while we use Docker, like images, containers, networks, volumes, plugins, and many more. So, here we are discussing some of these objects in detail:<\/span><\/p>\n<h3><span style=\"font-weight: 400\">i. Docker Images<\/span><\/h3>\n<p><span style=\"font-weight: 400\">In simple words, a read-only template with instructions for creating a Docker container is <strong>what we call Docker Images<\/strong>. Many times, an image is based on another image, but with some additional customization. <\/span><\/p>\n<p><span style=\"font-weight: 400\">In other words, an inert, immutable, file that\u2019s essentially a snapshot of a container is what we call an image. Also, we can say that an image is a template with instructions for creating a Docker container.<\/span><\/p>\n<p><span style=\"font-weight: 400\">In addition, images are so lightweight, small, as well as fast, when compared to other virtualization technologies.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">ii. Docker Containers<\/span><\/h3>\n<p><span style=\"font-weight: 400\">Let\u2019s understand about containers in a different way that, if an image is a class, then a container is an instance of a class\u2014a runtime object. So, a runnable instance of an image is what we call a container. By using the Docker API or CLI, it is possible to create, start, stop, move, or delete a container. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Some more functions possible with Containers are, we can connect a container to one or more networks or we can attach storage to it, or also we can create a new image on the basis of its current state.<\/span><\/p>\n<p>So, this was all in Docker Architecture. Hope you like our explanation.<\/p>\n<h2><span style=\"font-weight: 400\">Conclusion &#8211; How Docker Works<\/span><\/h2>\n<p><span style=\"font-weight: 400\">Hence, in this Docker Architecture Tutorial, we have seen the concept of how Docker works. Also, we discussed Docker Objects to gain deep insights into the topic. Still, if you have any confusion regarding Docker Architecture, ask in the comment tab.\u00a0<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today, we will see Docker architecture to understand its working well. Also, we will see the brief description of Docker objects such as images, containers etc. However, to understand about Docker architecture well, it&#46;&#46;&#46;<\/p>\n","protected":false},"author":6,"featured_media":37770,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16988],"tags":[17027,16968,17028,16964,16965,17029,17026],"class_list":["post-37739","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-docker","tag-architecture-of-docker","tag-docker-architecture","tag-docker-architecture-diagram","tag-docker-container","tag-docker-images","tag-docker-objects","tag-how-docker-works"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Docker Architecture | How Docker Works - Host, Client, &amp; Registries - DataFlair<\/title>\n<meta name=\"description\" content=\"Docker Architecture, how docker works, Components of docker, Docker architecture images, working of Docker, Docker container, Docker Images\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/data-flair.training\/blogs\/docker-architecture\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Docker Architecture | How Docker Works - Host, Client, &amp; Registries - DataFlair\" \/>\n<meta property=\"og:description\" content=\"Docker Architecture, how docker works, Components of docker, Docker architecture images, working of Docker, Docker container, Docker Images\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/docker-architecture\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2018-11-25T07:50:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/10\/Docker-Architecture-01-2.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1202\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Docker Architecture | How Docker Works - Host, Client, &amp; Registries - DataFlair","description":"Docker Architecture, how docker works, Components of docker, Docker architecture images, working of Docker, Docker container, Docker Images","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/data-flair.training\/blogs\/docker-architecture\/","og_locale":"en_US","og_type":"article","og_title":"Docker Architecture | How Docker Works - Host, Client, &amp; Registries - DataFlair","og_description":"Docker Architecture, how docker works, Components of docker, Docker architecture images, working of Docker, Docker container, Docker Images","og_url":"https:\/\/data-flair.training\/blogs\/docker-architecture\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2018-11-25T07:50:22+00:00","og_image":[{"width":1202,"height":630,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/10\/Docker-Architecture-01-2.jpg","type":"image\/jpeg"}],"author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/docker-architecture\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/docker-architecture\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/2c58ecb4f73a39f0ef993f1ddfcd7b89"},"headline":"Docker Architecture | How Docker Works &#8211; Host, Client, &amp; Registries","datePublished":"2018-11-25T07:50:22+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/docker-architecture\/"},"wordCount":789,"commentCount":1,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/docker-architecture\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/10\/Docker-Architecture-01-2.jpg","keywords":["architecture of docker","Docker architecture","docker architecture diagram","docker container","docker images","Docker Objects","how docker works"],"articleSection":["Docker Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/docker-architecture\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/docker-architecture\/","url":"https:\/\/data-flair.training\/blogs\/docker-architecture\/","name":"Docker Architecture | How Docker Works - Host, Client, &amp; Registries - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/docker-architecture\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/docker-architecture\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/10\/Docker-Architecture-01-2.jpg","datePublished":"2018-11-25T07:50:22+00:00","description":"Docker Architecture, how docker works, Components of docker, Docker architecture images, working of Docker, Docker container, Docker Images","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/docker-architecture\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/docker-architecture\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/docker-architecture\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/10\/Docker-Architecture-01-2.jpg","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/10\/Docker-Architecture-01-2.jpg","width":1202,"height":630,"caption":"Docker Architecture - Host, Client, &amp; registries | How Docker Works"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/docker-architecture\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"Docker Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/docker\/"},{"@type":"ListItem","position":3,"name":"Docker Architecture | How Docker Works &#8211; Host, Client, &amp; Registries"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/2c58ecb4f73a39f0ef993f1ddfcd7b89","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/1ce4a0e3e542444fc73bbebf83e89e8b73e2d95ccb1fcee64da9945f078b97c5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1ce4a0e3e542444fc73bbebf83e89e8b73e2d95ccb1fcee64da9945f078b97c5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1ce4a0e3e542444fc73bbebf83e89e8b73e2d95ccb1fcee64da9945f078b97c5?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"The DataFlair Team provides industry-driven content on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. Our expert educators focus on delivering value-packed, easy-to-follow resources for tech enthusiasts and professionals.","url":"https:\/\/data-flair.training\/blogs\/author\/dfteam2\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/37739","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=37739"}],"version-history":[{"count":0,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/37739\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/37770"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=37739"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=37739"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=37739"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}