﻿
{"id":14314,"date":"2020-03-20T19:20:20","date_gmt":"2020-03-20T19:20:20","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=14314"},"modified":"2020-03-20T19:20:20","modified_gmt":"2020-03-20T19:20:20","slug":"docker-nedir","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/docker-nedir\/","title":{"rendered":"Docker Nedir?"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bu i\u00e7eri\u011fimizde <a href=\"https:\/\/www.gencayyildiz.com\/blog\/net-core-docker-yazi-dizisi\/\" rel=\"noopener noreferrer\" target=\"_blank\">.NET Core &#038; Docker Yaz\u0131 Dizisi<\/a>nin ilk girizgah\u0131 olan Docker teknolojisinin ne oldu\u011funa dair uzun ve geni\u015f bir makale kaleme al\u0131yor olaca\u011f\u0131z. Haydi gelin, uzun soluklu bir makale dizisinin teorik ve kavramsal temellerini burada sars\u0131lmaz bir \u015fekilde in\u015fa edelim&#8230;<\/p>\n<h3>Docker Nedir?<\/h3>\n<blockquote><p><em>Yaz\u0131l\u0131m geli\u015ftiriciler ve sistem y\u00f6neticileri i\u00e7in geli\u015ftirilmi\u015f a\u00e7\u0131k kaynak olan bir yeni nesil sanalla\u015ft\u0131rma platformudur.<\/em><\/p><\/blockquote>\n<p>Biliyorum&#8230; Her ne kadar okumay\u0131 bilen ve bu y\u00fczden okudu\u011funu anlayan y\u00fcksek ferasetli bir birey olsan\u0131zda yukar\u0131daki a\u00e7\u0131klaman\u0131n sizin i\u00e7in pekte bir anlam ifade etmedi\u011finin fark\u0131nday\u0131m. O y\u00fczden Docker&#8217;\u0131n ne oldu\u011funa dair yap\u0131lan tan\u0131m\u0131 anlaml\u0131 hale getirebilmemiz i\u00e7in \u00f6ncelikle bu tan\u0131m\u0131n vurgusundaki temel kavram\u0131 inceleyelim. Yani &#8216;<em>sanalla\u015ft\u0131rma<\/em>&#8216; kavram\u0131n\u0131&#8230;<\/p>\n<h4>Sanalla\u015ft\u0131rma Nedir?<\/h4>\n<p>Temelde, bir bilgisayarda kurulu i\u015fletim sistemi \u00fczerinde bir veya birden fazla farkl\u0131 i\u015fletim sistemini birbirlerinden izole edilmi\u015f halde aya\u011fa kald\u0131rabilen ve \u00fczerinde belirlenmi\u015f ama\u00e7 ya da ama\u00e7lara uygun i\u015flem yap\u0131lmas\u0131n\u0131 sa\u011flayan teknolojilerin genel ad\u0131d\u0131r, sanalla\u015ft\u0131rma. Yani bir nevi sanal ortamda birden fazla makine olu\u015fturmakt\u0131r diyebiliriz.<\/p>\n<p>Sanalla\u015ft\u0131rmay\u0131 a\u015fa\u011f\u0131daki senaryoya uygun durumlarda kullanabiliriz.<br \/>\n<span style=\"font-size:16px;color:purple;\">Bir i\u015fletme; web sitelerini bar\u0131nd\u0131rmak, e-posta y\u00f6netimini sa\u011flamak ve erp uygulamas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in \u00e7\u00f6z\u00fcm aramaktad\u0131r. E\u011fer ki her bir i\u015fleme \u00f6zel \u00fc\u00e7 fiziksel sunucu kiraland\u0131\u011f\u0131n\u0131 yahut al\u0131nd\u0131\u011f\u0131n\u0131 d\u00fc\u015f\u00fcn\u00fcrsek muhtemelen her bir sunucudaki i\u015f y\u00fck\u00fc yapaca\u011f\u0131 i\u015fe g\u00f6re de\u011fi\u015fkenlik g\u00f6sterecek olsada bilgi i\u015flem kapasitesine nazaran kesinlikle %100&#8217;l\u00fck bir da\u011f\u0131l\u0131m g\u00f6stermeyece\u011finden dolay\u0131 i\u015fletme giderlerinde y\u00fcksek maliyete sebebiyet verecektir. D\u00fc\u015f\u00fcnsenize, 100 birimlik bilgi i\u015flem kapasitesi olan bir sunucuyu maksimum 30 birimlik bir i\u015fe \u00f6zel ayarlamak verim ve maliyet a\u00e7\u0131s\u0131ndan ne kadar mant\u0131kl\u0131 ve tercih edilmeye de\u011fer olabilir ki?<\/span><\/p>\n<p><span style=\"font-size:16px;color:purple;\">\u0130\u015fte b\u00f6yle bir durumda sanalla\u015ft\u0131rma tercih edilerek birden fazla makine \u00fczerinde \u00e7al\u0131\u015fmak yerine tek bir makine \u00fczerinden gerekti\u011fi kadar sanal makine \u00fcretilebilir ve her bir sanal makineya ihtiyac\u0131 kadar bilgi i\u015flem kapasitesi atanarak %100&#8217;e yak\u0131n bir verimlilik ve m\u00fcmk\u00fcn mertebe d\u00fc\u015f\u00fck maliyetle ihtiya\u00e7 giderilebilir.<br \/>\n<\/span><\/p>\n<p>San\u0131r\u0131m sanalla\u015ft\u0131rman\u0131n ne oldu\u011funu art\u0131k anlad\u0131\u011f\u0131m\u0131z\u0131 d\u00fc\u015f\u00fcn\u00fcyorum. \u015eimdi Docker&#8217;\u0131n ne oldu\u011funa dair a\u00e7\u0131klamalar\u0131m\u0131za devam edebiliriz.<\/p>\n<p>Docker, yaz\u0131l\u0131m geli\u015ftiriciler ve sistem y\u00f6neticileri i\u00e7in yeni nesil sanalla\u015ft\u0131rma platformudur demi\u015ftik. Yani yukar\u0131daki senaryotik anlat\u0131mda oldu\u011fu gibi bir makine \u00fczerinde sanal makineler kurmam\u0131z\u0131 ve bu i\u015flemi birazdan mukayese edece\u011fimiz \u00fczere eski y\u00f6ntemlere nazaran daha performansl\u0131 bir yakla\u015f\u0131mla ger\u00e7ekle\u015ftirmemizi sa\u011flayan teknolojidir. Ayr\u0131ca b\u00fcy\u00fck bir Open Source Community&#8217;e sahiptir ve GO diliyle yaz\u0131lm\u0131\u015ft\u0131r.<\/p>\n<p><strong>Peki eski teknolojilerden fark\u0131 nedir?<\/strong><br \/>\nBu soruyu cevaplayabilmek i\u00e7in yeni nesilden \u00f6nceki teknolojilerin \u00e7al\u0131\u015fma mekanizmas\u0131na g\u00f6z atmam\u0131z gerekmektedir. Bunun i\u00e7in a\u015fa\u011f\u0131daki \u015femada g\u00f6rsel anlat\u0131lan yap\u0131 bizlere rehberlik edebilir.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Docker-Nedir..jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Docker-Nedir..jpg\" alt=\"Docker Nedir?\" width=\"443\" height=\"421\" class=\"alignnone size-full wp-image-14340\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Docker-Nedir..jpg 443w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Docker-Nedir.-300x285.jpg 300w\" sizes=\"auto, (max-width: 443px) 100vw, 443px\" \/><\/a><br \/>\n\u015eemay\u0131 incelersek e\u011fer, sunucu(yahut makine) \u00fczerinde kurulu olan bir i\u015fletim sistemi(infrastructure) \u00fczerinde sanalla\u015ft\u0131rma mekanizmas\u0131n\u0131 sa\u011flayan Hypervisor yap\u0131s\u0131 kuruludur. Bu yap\u0131 sayesinde birbirinden farkl\u0131 konfig\u00fcrasyonlara sahip sanal makineler aya\u011fa kald\u0131r\u0131l\u0131r. Burada dikkat ederseniz her bir sanal makine i\u00e7erisinde misafir bir i\u015fletim sistemi kurulmakta ve bununla beraber bar\u0131nd\u0131r\u0131lan uygulamaya dair publish dosyalar\u0131 ve k\u00fct\u00fcphaneler tutulmaktad\u0131r.<\/p>\n<p>Yeni nesil olan Docker teknolojisinin sanalla\u015ft\u0131rma mekanizmas\u0131n\u0131 incelersek e\u011fer;<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Docker-Nedir.-1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Docker-Nedir.-1.jpg\" alt=\"Docker Nedir?\" width=\"536\" height=\"450\" class=\"alignnone size-full wp-image-14343\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Docker-Nedir.-1.jpg 536w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Docker-Nedir.-1-300x252.jpg 300w\" sizes=\"auto, (max-width: 536px) 100vw, 536px\" \/><\/a><br \/>\nG\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere yine bir sunucu \u00fczerinde kurulu i\u015fletim sistemi \u00fczerinde(infrastructure &#038; host operating system) sanal makineler aya\u011fa kald\u0131r\u0131lmakta lakin bu sefer dikkat ederseniz Hypervisor yerine Docker teknolojisi kullan\u0131lmaktad\u0131r. Docker \u00fczerinden aya\u011fa kald\u0131r\u0131lan t\u00fcm sanal makineleri<span style=\"font-size:12px;\">(ileride bunlara container diyece\u011fiz)<\/span> incelersek e\u011fer misafir bir i\u015fletim sistemi olmaks\u0131z\u0131n direkt olarak bar\u0131nd\u0131r\u0131lacak uygulamaya dair k\u00fct\u00fcphaneler ve gerekli dosyalar\u0131 tutmaktad\u0131r.<\/p>\n<p>Buradan anlayaca\u011f\u0131m\u0131z Docker \u00f6ncesi sanalla\u015ft\u0131rma ortamlar\u0131nda; aya\u011fa kald\u0131r\u0131lan sanal makinalarda \u00f6ncelikle bir misafir i\u015fletim sistemi aya\u011fa kald\u0131rmak ve ard\u0131ndan s\u0131ras\u0131yla konfig\u00fcrasyon ayarlamak ve uygulama k\u00fct\u00fcphanelerini y\u00fcklemek gerekiyordu ve ancak bu i\u015flemlerden sonra uygulamay\u0131 aya\u011fa kald\u0131rabiliyorduk.<\/p>\n<p>Lakin g\u00fcn\u00fcm\u00fczde Docker sayesinde aya\u011fa kald\u0131r\u0131lan uygulamalarda ekstradan misafir bir i\u015fletim sistemi y\u00fcklememize gerek kalmamakta ve sadece uygulamaya dair k\u00fct\u00fcphane, dosya vs. ile birlikte publish dosyalar\u0131n\u0131n y\u00fcklenmesi yeterli olmaktad\u0131r.<\/p>\n<blockquote><p><em>Yeni nesilden \u00f6nceki teknolojilerin genel ad\u0131 <strong>Virtual Machine<\/strong>&#8216;dir.<\/em><\/p><\/blockquote>\n<p>Virtual Machine, farkl\u0131 seviyelerde sanalla\u015ft\u0131rma sa\u011flayan Hypervisor kullanarak donan\u0131m payla\u015ft\u0131rma \u00fczerine odakl\u0131 bir \u00e7al\u0131\u015fma yapmaktad\u0131r. Her bir virtual machine i\u00e7erisinde kendi i\u015fletim sistemi vard\u0131r ve bellek y\u00f6netimi birbirlerinden izole edilmi\u015ftir. Docker ise ba\u015fl\u0131 ba\u015f\u0131na bir platformdur. Bilgisayarda kurulan Docker Engine \u00fczerinden konteynerlar \u00e7al\u0131\u015ft\u0131r\u0131larak payla\u015f\u0131m ger\u00e7ekle\u015ftirilir.<\/p>\n<p><strong>Container Nedir?<\/strong><br \/>\n\u0130\u00e7erisinde uygulamay\u0131 \u00e7al\u0131\u015ft\u0131racak olan mini i\u015fletim sistemi olarak d\u00fc\u015f\u00fcnebiliriz. Sonraki makalelerimizde daha detayl\u0131 inceleyecek ve irdeleyece\u011fiz.<\/p>\n<p>Docker ile Virtual Machine yap\u0131s\u0131 aras\u0131ndaki fark\u0131 daha net g\u00f6rebilmek i\u00e7in a\u015fa\u011f\u0131da k\u0131yaslayal\u0131m;<\/p>\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>Virtual Machine<\/th>\n<th>Docker<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"font-weight: bold;text-align: left;\">OS<\/td>\n<td>Tam i\u015fletim sistemi<\/td>\n<td>K\u00fc\u00e7\u00fclt\u00fclm\u00fc\u015f i\u015fletim sistemi<\/td>\n<\/tr>\n<tr>\n<td style=\"font-weight: bold;text-align: left;\">\u0130zalasyon<\/td>\n<td>\u0130\u015fletim sistemi seviyesinde. Y\u00fcksek<\/td>\n<td>Container seviyesinde. D\u00fc\u015f\u00fck<\/td>\n<\/tr>\n<tr>\n<td style=\"font-weight: bold;text-align: left;\">\u00c7al\u0131\u015f\u0131r hale gelmesi<\/td>\n<td>Dakikalar<\/td>\n<td>Saniyeler<\/td>\n<\/tr>\n<tr>\n<td style=\"font-weight: bold;text-align: left;\">Versiyonlama<\/td>\n<td>Yok<\/td>\n<td>Var<\/td>\n<\/tr>\n<tr>\n<td style=\"font-weight: bold;text-align: left;\">Kolay payla\u015f\u0131labilirlik<\/td>\n<td>D\u00fc\u015f\u00fck<\/td>\n<td>Y\u00fcksek<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Docker; yeni yeteneklerle getirdi\u011fi pratik sanalla\u015ft\u0131rman\u0131n yan\u0131nda, uygulamay\u0131 g\u00fcvenli bir \u015fekilde izole ederek h\u0131zl\u0131 ve esnek deployment kolayl\u0131\u011f\u0131 sa\u011flayabilen ve bir yandan da i\u015fletim maliyetini olduk\u00e7a azaltabilen bir teknoloji olmas\u0131yla birlikte microservices gibi bir\u00e7ok mimarisel senaryoya e\u015flik edebilen ve detayl\u0131ca monit\u00f6r edilebilen, ta\u015f\u0131nabilen ve \u00f6l\u00e7eklendirilebilen bir sanalla\u015ft\u0131rma teknolojisidir. Ayr\u0131ca y\u00fczlerce da\u011f\u0131t\u0131k docker container \u00fczerinde \u00e7e\u015fitli frameworkler \u00e7al\u0131\u015ft\u0131rmam\u0131za olanak sa\u011flar.<\/p>\n<p>Docker, development ortam\u0131ndaki konfig\u00fcrasyon ile production ortam\u0131ndaki konfig\u00fcrasyonu birebir ayn\u0131 sa\u011flayaca\u011f\u0131 i\u00e7in &#8220;local&#8217;de \u00e7al\u0131\u015f\u0131yordu, test&#8217;te \u00e7al\u0131\u015fm\u0131yor&#8221;, &#8220;bilgisayarda \u00e7al\u0131\u015fan uygulama, sunucuda neden \u00e7al\u0131\u015fmaz lan!&#8221; vs. \u015feklindeki sorunlara k\u00f6kten \u00e7\u00f6z\u00fcm \u00fcreten bir teknolojidir. <\/p>\n<blockquote><p><em>Docker, bir sunucuda birka\u00e7 dakika i\u00e7erisinde uygulamam\u0131z\u0131 kurmam\u0131z\u0131 sa\u011flayan efsanedir.<\/em><\/p><\/blockquote>\n<p>Nihai s\u00f6ze gelirsek, sanalla\u015ft\u0131rma operasyonlar\u0131nda kullan\u0131m kolayl\u0131\u011f\u0131, h\u0131zl\u0131 \u00f6l\u00e7eklendirilebilmesi, kolay payla\u015f\u0131labilirli\u011fi ve ba\u011f\u0131ms\u0131z i\u015flevler olan micro hizmet mimarisini desteklemesi sebeplerinden \u00f6t\u00fcr\u00fc tercih etti\u011fimiz\/edece\u011fimiz bir platform olan Docker \u00fczerine giri\u015f seviyesinde teorik isti\u015fare etmi\u015f olduk. Okudu\u011funuz i\u00e7in te\u015fekk\u00fcr ederim.<\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#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, Bu i\u00e7eri\u011fimizde .NET Core &#038; Docker Yaz\u0131 Dizisinin ilk girizgah\u0131 olan Docker teknolojisinin ne oldu\u011funa dair uzun ve geni\u015f bir makale kaleme al\u0131yor olaca\u011f\u0131z. Haydi gelin, uzun soluklu bir makale dizisinin teorik ve&#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":14313,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3281],"tags":[3290,3284,3285,3287,3282,3289,3283,3286,3288],"class_list":["post-14314","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-docker","tag-container-nedir","tag-docker","tag-docker-nedir","tag-host-operating-system","tag-hypervisor","tag-microservices","tag-sanallastirma","tag-sanallastirma-nedir","tag-virtual-machine"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/14314","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=14314"}],"version-history":[{"count":54,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/14314\/revisions"}],"predecessor-version":[{"id":14372,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/14314\/revisions\/14372"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/14313"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=14314"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=14314"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=14314"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}