{"id":258956,"date":"2026-07-13T16:36:33","date_gmt":"2026-07-13T13:36:33","guid":{"rendered":"https:\/\/1kitap1.com\/en\/docker-practical-guide-for-developers-and-devops-teams-bernd-oggl\/"},"modified":"2026-07-13T16:36:33","modified_gmt":"2026-07-13T13:36:33","slug":"docker-practical-guide-for-developers-and-devops-teams-bernd-oggl","status":"publish","type":"post","link":"https:\/\/1kitap1.com\/en\/docker-practical-guide-for-developers-and-devops-teams-bernd-oggl\/","title":{"rendered":"Docker Practical Guide For Developers And DevOps Teams &#8211; Bernd Oggl"},"content":{"rendered":"<figure style=\"text-align:center;margin:0 auto 1.5em;\"><img decoding=\"async\" src=\"https:\/\/1kitap1.com\/en\/wp-content\/uploads\/2026\/07\/5bf4cc90657811ad.jpg\" alt=\" - Unknown book cover\" style=\"max-width:300px;width:100%;height:auto;box-shadow:0 4px 12px rgba(0,0,0,.25);border-radius:4px;\"\/><\/figure>\n<p>This service uses the current PostgreSQL image and uses the depends_on statement to indicate that the database server must also be started. As a command for the backup service, it\u2019s not the PostgreSQL database that should be started but pg_dump (here, in the multiline YAML Ain\u2019t Markup Language [YAML] notation). The backup file is stored in \/backup\/geonames.dump. In this case, it\u2019s a volume managed by Docker, but you can of course mount a local directory of your computer here.<\/p>\n<p>The pg_dump command reads from the environment variable PGPASSWORD, which is the data- base password defined in the environment section. The trick with this setup is that docker compose is called with both configuration files and the run statement for the backup service: docker compose -f docker-compose.yml \\ -f docker-compose.backup.yml run &#8211;rm backup This starts a container that runs the backup service and uses the pg_dump command to save the backup to \/backup.<\/p>\n<p>After that, the container gets deleted again (&#8211;rm), and the volume remains with the backup. 10.3 MongoDB With MongoDB, we want to introduce just one of the many NoSQL databases. Unlike relational database systems (RDBMS), NoSQL databases don\u2019t use tables and fixed structures. Data is stored in documents whose structures aren\u2019t bound to a strict schema. On one hand, this is very convenient because it saves complicated database schema adjustments, but on the other hand, it can also lead to confusion if each docu- ment has a different structure.<\/p>\n<p>Especially in the environment of modern web applications, NoSQL databases are very popular. The JavaScript Object Notation (JSON) format, which is widely used as an exchange format between the frontend and backend, can be stored or updated very conveniently in NoSQL databases, often without modifying it. MongoDB also has the reputation of scaling well with very large data volumes (keyword Big Data), even where relational databases reach their limits.<\/p>\n<blockquote>\n<p>The Rheinwerk Computing series from Rheinwerk Publishing offers new and established professionals comprehensive guidance to enrich their skillsets and enhance their career prospects. Our publications are written by leading experts in the fields of programming, administration, security, analytics, and more. Each book is detailed and hands-on to help readers develop essential, practical skills that they can apply to their daily work.<\/p>\n<p>For further information, please visit our website: www.rheinwerk-computing.com. Philip Ackermann JavaScript: The Comprehensive Guide 2022, 982 pages, paperback and e-book www.rheinwerk-computing.com\/5554 Sebastian Springer Node.js: The Comprehensive Guide 2022, 834 pages, paperback and e-book www.rheinwerk-computing.com\/5556 Christian Ullenboom Java: The Comprehensive Guide 2022, 1126 pages, paperback and e-book www.rheinwerk-computing.com\/5557 Johannes Ernesti, Peter Kaiser Python 3: The Comprehensive Guide 2022, 1036 pages, paperback and e-book www.rheinwerk-computing.com\/5566 Bernd \u00d6ggl, Michael Kofler Git: Project Management for Developers and DevOps Teams 2023, 407 pages, paperback and e-book www.rheinwerk-computing.com\/5555 Rheinwerk Computing Bernd \u00d6ggl, Michael Kofler Docker Practical Guide for Developers and DevOps Teams Dear Reader, One line from Docker\u2019s mission statement has always stood out to me: \u201cWe handle the tedious setup, so you can focus on the code.\u201d<\/p>\n<p>I like to think that we do something simi- lar here at Rheinwerk. Having been internet-dwellers for a few decades now, most of us have had the experi- ence of picking up a new skill solely from web content. We\u2019ve cobbled together an edu- cation in, say, sourdough baking, via YouTube videos, blog posts, and how-to articles.<\/p>\n<p>However, online learning has its drawbacks: you\u2019ve got to sift out misinformation, you don\u2019t always know what you don\u2019t know, and content isn\u2019t always tailored to your needs (as anyone who has tried to bake at 8,000 feet above sea level using a standard recipe can testify)!<\/p>\n<p>So perhaps our version would be: \u201cWe curate the content, so you can focus on learn- ing.\u201d With all our books, our goal is always to present our reader with vetted informa- tion that\u2019s been thoughtfully organized and meets their needs. My first piece of advice to new authors is this: keep your reader in mind and write what they need to know. What did you think about Docker: Practical Guide for Developers and DevOps Teams? Your comments and suggestions are the most useful tools to help us make our books the best they can be.<\/p>\n<\/blockquote>\n<p><em>This is a short excerpt from the opening of &ldquo;&rdquo; by Unknown, quoted for review and introduction purposes. All rights belong to the copyright holders.<\/em><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/1kitap1.com\/en\/docker-practical-guide-for-developers-and-devops-teams-bernd-oggl\/#Book_Information\" >Book Information<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/1kitap1.com\/en\/docker-practical-guide-for-developers-and-devops-teams-bernd-oggl\/#Reading_Word_Statistics\" >Reading &amp; Word Statistics<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/1kitap1.com\/en\/docker-practical-guide-for-developers-and-devops-teams-bernd-oggl\/#Most_Frequent_Words\" >Most Frequent Words<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/1kitap1.com\/en\/docker-practical-guide-for-developers-and-devops-teams-bernd-oggl\/#PDF_Download\" >PDF Download<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Book_Information\"><\/span>Book Information<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li><strong>Unique ID:<\/strong> 5bf4cc90657811ad<\/li>\n<li><strong>File Extension:<\/strong> .pdf<\/li>\n<li><strong>File Size:<\/strong> 21,981,094 bytes (20.963 MB)<\/li>\n<li><strong>Title:<\/strong> &#8211;<\/li>\n<li><strong>Author:<\/strong> Unknown<\/li>\n<li><strong>ISBN:<\/strong> 9781493223831, 9781493223848, 9781493223855<\/li>\n<li><strong>Pages:<\/strong> 495<\/li>\n<li><strong>Language:<\/strong> English (en)<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Reading_Word_Statistics\"><\/span>Reading &amp; Word Statistics<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li><strong>Estimated Reading Time:<\/strong> 634.53 minutes<\/li>\n<li><strong>Total Words:<\/strong> 126,906<\/li>\n<li><strong>Total Characters:<\/strong> 898,628<\/li>\n<li><strong>Average Words per Page:<\/strong> 256.38<\/li>\n<li><strong>Average Characters per Page:<\/strong> 1815.41<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Most_Frequent_Words\"><\/span>Most Frequent Words<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>docker (2737), container (824), image (735), file (723), run (648), com (525), server (512), use (511), command (501), name (440), containers (409), web (394), gitlab (358), copy (354), also (349), service (346), linux (346), docker-compose (346), user (335), images (319), https (309), following (293), version (286), need (285), root (279), data (264), node (262), host (262), system (261), directory (259), database (256), start (255), using (249), rheinwerk (248), running (247), create (247), nginx (247), personal (245), publishing (244), inc (242), wordpress (241), see (241), kubernetes (240), boston (238), yml (237), narahari (236), simhadri (236), jijap (236), datoinf (236), volumes (235), mysql (231), files (229), example (225), compose (223), var (222), volume (213), set (212), new (211), used (205), first (201), section (200), network (197), mariadb (195), port (194), configuration (194), services (192), however (190), environment (189), default (189), want (187), dockerfile (186), html (185), figure (184), chapter (180), local (179), it\u2019s (178), one (176), application (176), install (174), php (174), password (173), podman (173), via (172), now (168), swarm (168), api (168), time (163), installation (157), created (157), code (154), commands (153), build (151), info (151), process (150), setup (144), mongo (143), access (141), alpine (137), apache (132), work (130).<\/p>\n<h2><span class=\"ez-toc-section\" id=\"PDF_Download\"><\/span>PDF Download<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p style=\"text-align:center;\"><a href=\"https:\/\/1kitap1.com\/en\/wp-content\/uploads\/2026\/07\/docker-practical-guide-for-developers-and-devops-teams-bernd-oggl.pdf\" download rel=\"nofollow\" style=\"display:inline-block;background:#2271b1;color:#ffffff;padding:14px 36px;border-radius:6px;text-decoration:none;font-weight:bold;font-size:1.05em;\">&#11015;&#65039; PDF Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This service uses the current PostgreSQL image and uses the depends_on statement to indicate that the database server must also be started. As a command for the backup service, it\u2019s not the PostgreSQL database that should be started but pg_dump (here, in the multiline YAML Ain\u2019t Markup Language [YAML] notation). The backup file is stored [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":258954,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-258956","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-english"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/1kitap1.com\/en\/wp-json\/wp\/v2\/posts\/258956","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/1kitap1.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/1kitap1.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/1kitap1.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/1kitap1.com\/en\/wp-json\/wp\/v2\/comments?post=258956"}],"version-history":[{"count":0,"href":"https:\/\/1kitap1.com\/en\/wp-json\/wp\/v2\/posts\/258956\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/1kitap1.com\/en\/wp-json\/wp\/v2\/media\/258954"}],"wp:attachment":[{"href":"https:\/\/1kitap1.com\/en\/wp-json\/wp\/v2\/media?parent=258956"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/1kitap1.com\/en\/wp-json\/wp\/v2\/categories?post=258956"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/1kitap1.com\/en\/wp-json\/wp\/v2\/tags?post=258956"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}