﻿
{"id":14773,"date":"2020-04-03T01:12:49","date_gmt":"2020-04-03T01:12:49","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=14773"},"modified":"2020-04-03T01:12:49","modified_gmt":"2020-04-03T01:12:49","slug":"docker-bind-mount-ile-verilerin-kaliciligini-saglama","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/docker-bind-mount-ile-verilerin-kaliciligini-saglama\/","title":{"rendered":"Docker &#8211; Bind Mount \u0130le Verilerin Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131 Sa\u011flama"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bir \u00f6nceki <a href=\"https:\/\/www.gencayyildiz.com\/blog\/dockerda-uretilen-verilerin-kaliciligini-saglama\/\" target=\"_blank\" rel=\"noopener noreferrer\">Docker\u2019da \u00dcretilen Verilerin Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131 Sa\u011flama<\/a> ba\u015fl\u0131kl\u0131 makalemde Docker&#8217;da containerlarda aya\u011fa kald\u0131r\u0131lan uygulamalarda \u00fcretilen verilerin kal\u0131c\u0131l\u0131\u011f\u0131n\u0131n hangi metodoloji ve yakla\u015f\u0131mlarla sa\u011fland\u0131\u011f\u0131n\u0131 teorik olarak incelemi\u015ftik. Bu i\u00e7eri\u011fimizde ise bu yakla\u015f\u0131mlardan Bind Mount y\u00f6ntemini teknik olarak ele alacak ve irdeleyece\u011fiz.<\/p>\n<h3>Bind Mount Y\u00f6ntemiyle Verilerin Kal\u0131c\u0131l\u0131\u011f\u0131 Nas\u0131l Sa\u011flan\u0131r?<\/h3>\n<p>Bu konuda esas izahati yukar\u0131da adresi verilen makalede detaylar\u0131yla yapm\u0131\u015f olsakta, usul gere\u011fi burada da a\u00e7\u0131klama mahiyetinde bir ka\u00e7 sat\u0131r karalamak yerinde olacakt\u0131r. Bind Mount; container taraf\u0131nda \u00fcretilen datalar\u0131n ana makinedeki i\u015fletim sistemi \u00fczerinde manuel olarak olu\u015fturulan bir alanda depolanarak kal\u0131c\u0131l\u0131\u011f\u0131 sa\u011flanmas\u0131d\u0131r. Ana makine \u00fczerinde bir depolama ger\u00e7ekle\u015ftirdi\u011fi i\u00e7in t\u00fcm y\u00f6netim biz kullan\u0131c\u0131lar taraf\u0131ndan manuel ger\u00e7ekle\u015ftirilmekte ve Docker CLI taraf\u0131nda herhangi bir m\u00fcdahale s\u00f6z konusu olmamaktad\u0131r.<\/p>\n<h3>Bind Mount Kullan\u0131m\u0131<\/h3>\n<p>Bir container \u00fczerindeki verilerin Bind Mount ile nas\u0131l kal\u0131c\u0131 hale getirildi\u011fini pratik olarak inceleyelim. Bunun i\u00e7in ilk olarak yapmam\u0131z gereken baz\u0131 \u00f6ncelikler vard\u0131r;<\/p>\n<h5 style=\"color: purple;\">Ba\u015flarken<\/h5>\n<p>\u0130lk olarak Docker taraf\u0131nda fiziksel veri \u00fcretebilecek bir Asp.NET Core MVC projesi aya\u011fa kald\u0131r\u0131lmas\u0131 gerekmektedir. Bunun i\u00e7in hususi bir uygulama geli\u015ftirip i\u00e7eri\u011fimizin seyrine haz\u0131r olabilir yahut taraf\u0131mca hali haz\u0131rda tasarlanm\u0131\u015f resim ekleme ve listeleme uygulamas\u0131 olan <a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/DockerizeExampleProject.zip\">\u015furadaki<\/a> haz\u0131r projeyi edinerek, kullanabilirsiniz.<\/p>\n<p>Ayr\u0131ca Bind Mount y\u00f6nteminde i\u015fletim sistemi \u00fczerindeki belirtilen herhangi bir alan\u0131n kullan\u0131labilmesi i\u00e7in Docker&#8217;a dosya eri\u015fim izni verilmesi gerekmektedir. Bunun i\u00e7in ba\u015flat men\u00fcs\u00fcnden Docker simgesine t\u0131klayarak &#8220;Settings&#8221; -&gt; &#8220;Resources&#8221; -&gt; &#8220;File Sharing&#8221; kombinasyonunu takip ediniz ve nihai olarak a\u00e7\u0131lan pencerede Docker taraf\u0131ndan eri\u015fim izni verilmesi gereken s\u00fcr\u00fcc\u00fcleri se\u00e7iniz ve &#8220;Apply &amp; Restart&#8221; butonuna t\u0131klay\u0131n\u0131z.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-Bind-Mount-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-14789\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-Bind-Mount-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama.jpg\" alt=\"Docker - Bind Mount \u0130le Verilerin Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131 Sa\u011flama\" width=\"1463\" height=\"603\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-Bind-Mount-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama.jpg 1463w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-Bind-Mount-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama-300x124.jpg 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-Bind-Mount-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama-1024x422.jpg 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-Bind-Mount-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama-768x317.jpg 768w\" sizes=\"auto, (max-width: 1463px) 100vw, 1463px\" \/><\/a><\/p>\n<p>Bu \u00f6nc\u00fcllerle e\u015fli\u011finde art\u0131k Bind Mount y\u00f6ntemini teknik olarak ele alabiliriz.<\/p>\n<h5 style=\"color: purple;\">Bind Mount Kullanan Bir Container\u0131n Aya\u011fa Kald\u0131r\u0131lmas\u0131<\/h5>\n<p>Dockerfile dosyas\u0131n\u0131n tasarland\u0131\u011f\u0131n\u0131 ve imaj\u0131n\u0131n \u00fcretildi\u011fini varsayd\u0131\u011f\u0131m\u0131z uygulamam\u0131z\u0131n container\u0131n\u0131 aya\u011fa kald\u0131r\u0131l\u0131rken verilerin kal\u0131c\u0131l\u0131\u011f\u0131n\u0131 sa\u011flayabilmek i\u00e7in Bind Mount y\u00f6ntemini benimsemesi i\u00e7in a\u015fa\u011f\u0131daki gibi Docker CLI komutu yaz\u0131lmal\u0131d\u0131r.<\/p>\n<table>\n<thead>\n<tr>\n<th width=\"50%\">Prototip<\/th>\n<th>A\u00e7\u0131klama<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align:left;\">\n<em style=\"font-size:13px;\"><strong>docker run &#8211;rm -d -p &lt;port_out&gt;:&lt;port_in&gt; &#8211;name &lt;container_name&gt;<br \/>\n<span style=\"color:purple;\">&#8211;mount type=bind<\/span>,<br \/>\n<span style=\"color:orange;\">source=&#8221;&lt;source_path&gt;&#8221;<\/span>,<br \/>\n<span style=\"color:green;\">target=&#8221;&lt;target_source_path&gt;&#8221;<\/span> &lt;image_name&gt;<\/strong><\/em>\n<\/td>\n<td style=\"font-size:13px;text-align:left;\">\n<strong><em style=\"color:purple;\">&#8211;mount type=bind<\/em> : Verileri kal\u0131c\u0131 hale getirmek i\u00e7in kulland\u0131\u011f\u0131m\u0131z y\u00f6ntemin t\u00fcr\u00fcn\u00fc belirtiyoruz.<\/p>\n<p><em style=\"color:orange;\">source=&#8221;&lt;source_path&gt;&#8221;<\/em> : \u00dcretilen verilerin ana makinede depolanaca\u011f\u0131 dizini belirtiyoruz.<\/p>\n<p><em style=\"color:green;\">target=&#8221;&lt;target_source_path&gt;&#8221;<\/em> : Depolanacak verilerin nerede oldu\u011funu bildiren container i\u00e7erisindeki dizinini belirtiyoruz.<br \/>\n<\/strong>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong style=\"font-size: 10px; color: red;\"><u>\u00d6RNEK KOD<\/u><\/strong><br \/>\n<code style=\"color:red;\"><strong>docker run --rm -d -p 1071:1453 --name cont1 --mount type=bind,source=\"C:\\Users\\Gen\u00e7ay\\Desktop\\BindMountSource\",target=\"\/app\/wwwroot\/images\" appimage2:v2<\/strong><\/code><\/p>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-Bind-Mount-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama-1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-Bind-Mount-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama-1.jpg\" alt=\"Docker - Bind Mount \u0130le Verilerin Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131 Sa\u011flama\" width=\"1553\" height=\"118\" class=\"alignnone size-full wp-image-14823\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-Bind-Mount-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama-1.jpg 1553w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-Bind-Mount-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama-1-300x23.jpg 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-Bind-Mount-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama-1-1024x78.jpg 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-Bind-Mount-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama-1-768x58.jpg 768w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-Bind-Mount-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama-1-1536x117.jpg 1536w\" sizes=\"auto, (max-width: 1553px) 100vw, 1553px\" \/><\/a><br \/>\nYukar\u0131daki g\u00f6rsele bakarsan\u0131z e\u011fer uygulama imaj\u0131ndan Bind Mount t\u00fcr\u00fcnden ayn\u0131 depoyu kullanacak \u015fekilde biri 1071 bir di\u011fer ise 1072 portlar\u0131n\u0131 kullanan iki adet container aya\u011fa kald\u0131r\u0131lm\u0131\u015ft\u0131r. B\u00f6ylece datalar\u0131n sakland\u0131\u011f\u0131 yer merkezile\u015ftirilmi\u015f olmaktad\u0131r.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-Bind-Mount-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-Bind-Mount-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama.gif\" alt=\"Docker - Bind Mount \u0130le Verilerin Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131 Sa\u011flama\" width=\"800\" height=\"822\" class=\"alignnone size-full wp-image-14831\" \/><\/a><br \/>\nG\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere farkl\u0131 portlarda aya\u011fa kald\u0131r\u0131lan containerlardaki uygulamalar verileri ayn\u0131 alanda depolad\u0131klar\u0131 i\u00e7in birinde olu\u015fan verisel etkile\u015fim di\u011ferlerinide etkilemektedirler.<\/p>\n<p>\u0130\u015fletim sisteminde verileri depolad\u0131\u011f\u0131m\u0131z source path&#8217;e g\u00f6z atarsak e\u011fer;<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-Bind-Mount-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama-2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-Bind-Mount-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama-2.jpg\" alt=\"Docker - Bind Mount \u0130le Verilerin Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131 Sa\u011flama\" width=\"173\" height=\"186\" class=\"alignnone size-full wp-image-14833\" \/><\/a><br \/>\n\u00fcretilen verileri g\u00f6rmekteyiz. Tabi ki de containerlardaki veri etkile\u015fimine g\u00f6re bu dizinde anl\u0131k olarak fiziksel silk\u00fclasyon olas\u0131 oldu\u011fundan dolay\u0131 boyut ve i\u00e7erik olarak de\u011fi\u015fiklik g\u00f6sterebilir.<\/p>\n<p>B\u00f6ylece uygulamam\u0131z\u0131 \u00e7al\u0131\u015ft\u0131ran containerlar \u00fczerinde yap\u0131lan faaliyetler neticesinde \u00fcretilen verilerimizi basit ve ilkel bir y\u00f6ntem olan Bind Mount ile kal\u0131c\u0131 hale getirmi\u015f olduk. <\/p>\n<p>Bind Mount, i\u015flevsel olarak Docker platformunun ilk geli\u015ftirildi\u011fi tarihlerden beri var olan ve mevcudiyetini hala koruyabilen bir y\u00f6ntem olmas\u0131n\u0131n yan\u0131nda, esas\u0131nda basit olmas\u0131 bir avantaj gibi g\u00f6z\u00fcksede source path i\u00e7erisindeki \u00f6nceden fiziksel var olan dosyalar\u0131 kopyalamamas\u0131, Docker CLI kullan\u0131lamamas\u0131 vs. gibi bir\u00e7ok handikap bar\u0131nd\u0131rd\u0131\u011f\u0131 i\u00e7in verileri kal\u0131c\u0131 hale getirme durumlar\u0131nda pek tercih edilen bir y\u00f6ntem de\u011fildir. Dolay\u0131s\u0131yla bu handikaplar\u0131 a\u015fmak ve daha \u00e7a\u011fda\u015f ve dinamik bir \u015fekilde CLI yap\u0131lanmas\u0131yla y\u00f6netilebilir bir y\u00f6ntem uygulayabilmek i\u00e7in sonraki i\u00e7eri\u011fimizde ele alaca\u011f\u0131m\u0131z volume yap\u0131lanmas\u0131n\u0131 kullanaca\u011f\u0131m\u0131z\u0131 \u015fimdiden bellirtmek isterim&#8230;<\/p>\n<p>O halde \u015fimdilik g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Bir \u00f6nceki Docker\u2019da \u00dcretilen Verilerin Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131 Sa\u011flama ba\u015fl\u0131kl\u0131 makalemde Docker&#8217;da containerlarda aya\u011fa kald\u0131r\u0131lan uygulamalarda \u00fcretilen verilerin kal\u0131c\u0131l\u0131\u011f\u0131n\u0131n hangi metodoloji ve yakla\u015f\u0131mlarla sa\u011fland\u0131\u011f\u0131n\u0131 teorik olarak incelemi\u015ftik. Bu i\u00e7eri\u011fimizde ise bu yakla\u015f\u0131mlardan Bind Mount y\u00f6ntemini&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":14762,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3281],"tags":[3347,3348,3353],"class_list":["post-14773","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-docker","tag-bind-mount","tag-docker-bind-mount","tag-docker-verilerin-kaliciligini-saglama"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/14773","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=14773"}],"version-history":[{"count":66,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/14773\/revisions"}],"predecessor-version":[{"id":14847,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/14773\/revisions\/14847"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/14762"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=14773"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=14773"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=14773"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}