Docker'─▒n sanal makineden fark─▒ nedir?


Al─▒nan cevaba git


Docker ile tam bir VM aras─▒ndaki fark─▒ anlamaya ├žal─▒┼čmak i├žin Docker belgelerini yeniden okuyorum . Bu kadar a─č─▒r olmadan tam bir dosya sistemi, yal─▒t─▒lm─▒┼č a─č ortam─▒ vb. Sa─člamay─▒ nas─▒l ba┼čar─▒r?

Neden yaz─▒l─▒m─▒ Docker g├Âr├╝nt├╝s├╝ne da─č─▒tmak (do─čru terimse) tutarl─▒ bir ├╝retim ortam─▒na da─č─▒tmaktan daha kolay?


3485









Cevap say─▒s─▒n─▒ say: 19






Docker ba┼člang─▒├žta LinuX Containers'─▒ (LXC) kullan─▒yordu, ancak daha sonra sunucusuyla ayn─▒ i┼čletim sisteminde ├žal─▒┼čan runC'ye (eski ad─▒yla libcontainer ) ge├žiyordu . Bu, ├žok say─▒da ana bilgisayar i┼čletim sistemi kayna─č─▒n─▒ payla┼čmas─▒n─▒ sa─člar. Ayr─▒ca, katmanl─▒ bir dosya sistemi ( AuFS ) kullan─▒r ve a─č─▒ y├Ânetir.

AuFS katmanl─▒ bir dosya sistemidir, bu nedenle salt okunur bir k─▒sm─▒ ve birle┼čtirilmi┼č bir yazma par├žas─▒na sahip olabilirsiniz. Biri i┼čletim sisteminin ortak par├žalar─▒n─▒ salt okunur (ve t├╝m kaplar─▒n─▒z aras─▒nda payla┼č─▒lm─▒┼č) olarak alabilir ve daha sonra her bir kaba yazma i├žin kendi montaj─▒n─▒ verebilir.

Diyelim ki 1 GB'l─▒k bir konteyner resminiz var; E─čer tam bir VM kullanmak isteseydiniz, istedi─činiz 1 GB ├žarp─▒ x VM say─▒s─▒na ihtiyac─▒n─▒z olacakt─▒. Docker ve AuFS ile 1 GBÔÇÖ─▒n b├╝y├╝k b├Âl├╝m├╝n├╝ t├╝m konteynerler aras─▒nda payla┼čabilir ve 1000 konteyneriniz varsa, yine de konteyner i┼čletim sistemi i├žin yaln─▒zca 1 GBÔÇÖin ├╝zerinde bir alana sahip olabilirsiniz (hepsinin ayn─▒ i┼čletim sistemi g├Âr├╝nt├╝s├╝n├╝ y├╝r├╝tt├╝─č├╝n├╝ varsayal─▒m) .

Tam bir sanalla┼čt─▒r─▒lm─▒┼č sistem, kendisine tahsis edilmi┼č kendi kaynak k├╝mesini elde eder ve en az payla┼č─▒m─▒ yapar. Daha fazla yal─▒t─▒m elde edersiniz, ancak ├žok daha a─č─▒rd─▒r (daha fazla kaynak gerektirir). Docker ile daha az yal─▒t─▒m elde edersiniz, ancak kaplar hafiftir (daha az kaynak gerektirir). B├Âylece kolayca bir ana bilgisayarda binlerce konteyner ├žal─▒┼čt─▒rabilir ve g├Âz k─▒rpmaz bile. Bunu Xen ile yapmay─▒ deneyin ve ger├žekten b├╝y├╝k bir ev sahibiniz yoksa, bunun m├╝mk├╝n oldu─čunu sanm─▒yorum.

Tam bir sanalla┼čt─▒r─▒lm─▒┼č sistemin ba┼člat─▒lmas─▒ genellikle birka├ž dakika al─▒rken, Docker / LXC / runC kaplar─▒ saniyeler s├╝rer ve ├žo─ču zaman bir saniyeden daha k─▒sa s├╝rer.

Her sanalla┼čt─▒r─▒lm─▒┼č sistem t├╝r├╝ i├žin art─▒lar─▒ ve eksileri var. Garantili kaynaklarla tam izolasyon istiyorsan─▒z, tam bir VM gitmenin yoludur. S├╝re├žleri birbirinden izole etmek ve makul bir boyutta bir ana bilgisayarda bunlardan bir ton ├žal─▒┼čt─▒rmak istiyorsan─▒z, Docker / LXC / runC gitmenin yolu gibi g├Âr├╝n├╝yor.

Daha fazla bilgi i├žin, LXC'nin nas─▒l ├žal─▒┼čt─▒─č─▒n─▒ a├ž─▒klamak i├žin iyi bir i┼č yapan bu blog g├Ânderileri k├╝mesine bak─▒n .

Neden yaz─▒l─▒m─▒ docker g├Âr├╝nt├╝s├╝ne da─č─▒tmak (do─čru terimse) tutarl─▒ bir ├╝retim ortam─▒na da─č─▒tmaktan daha kolay?

Tutarl─▒ bir ├╝retim ortam─▒n─▒n konu┼čland─▒r─▒lmas─▒n─▒n yap─▒lmas─▒ daha kolayd─▒r. Chef ve Kukla gibi ara├žlar kullan─▒yor olsan─▒z bile , her zaman i┼čletim sistemi g├╝ncellemeleri ve toplant─▒ sahipleri ve ortamlar aras─▒nda de─či┼čen ba┼čka ┼čeyler vard─▒r.

Docker, i┼čletim sistemini payla┼č─▒lan bir g├Âr├╝nt├╝de yakalama becerisi sunar ve di─čer Docker ana bilgisayarlar─▒na da─č─▒t─▒lmas─▒n─▒ kolayla┼čt─▒r─▒r. Yerel olarak, dev, qa, prod, vb: hepsi ayn─▒ g├Âr├╝nt├╝de. Bunu di─čer ara├žlarla yapabilece─činizden emin olun, ancak neredeyse hi├ž kolay veya h─▒zl─▒ de─čil.

Bu test i├žin harika; Diyelim ki bir veritaban─▒na ba─članmas─▒ gereken binlerce testiniz var ve her test veritaban─▒n─▒n bozulmam─▒┼č bir kopyas─▒na ihtiya├ž duyuyor ve verilerde de─či┼čiklik yapacak. Buna klasik yakla┼č─▒m, her testten sonra veritaban─▒n─▒ ├Âzel kodla veya Flyway gibi ara├žlarla s─▒f─▒rlamakt─▒r - bu ├žok zaman alabilir ve testlerin seri olarak yap─▒lmas─▒ gerekti─či anlam─▒na gelir. Ancak, Docker ile veritaban─▒n─▒z─▒n bir g├Âr├╝nt├╝s├╝n├╝ olu┼čturabilir ve test ba┼č─▒na bir ├Ârnek ├žal─▒┼čt─▒rabilir ve daha sonra hepsinin veritaban─▒n─▒n ayn─▒ anl─▒k g├Âr├╝nt├╝s├╝ne kar┼č─▒ ├žal─▒┼čaca─č─▒n─▒ bildi─činiz i├žin t├╝m testleri paralel olarak ├žal─▒┼čt─▒rabilirsiniz. Testler paralel ve Docker konteynerlerinde ├žal─▒┼čt─▒─č─▒ndan, ayn─▒ kutuda ayn─▒ anda ├žal─▒┼čabilirler ve ├žok daha h─▒zl─▒ bitmelidirler. Bunu tam bir VM ile yapmay─▒ deneyin.

Yorumlardan ...

─░lgin├ž! San─▒r─▒m hala "i┼čletim sisteminin anl─▒k g├Âr├╝nt├╝s├╝" kavram─▒ ile kafam kar─▒┼čt─▒. Ki┼či bunu i┼čletim sisteminin g├Âr├╝nt├╝s├╝ olmadan nas─▒l yapar?

Bakal─▒m a├ž─▒klayabilir miyim? Temel bir g├Âr├╝nt├╝yle ba┼člar, sonra de─či┼čikliklerinizi yapars─▒n─▒z ve bu de─či┼čiklikleri liman i┼č├žisi kullanarak kabul edersiniz ve bu bir g├Âr├╝nt├╝ olu┼čturur. Bu g├Âr├╝nt├╝ yaln─▒zca tabandan farkl─▒l─▒klar i├žeriyor. Resminizi ├žal─▒┼čt─▒rmak istedi─činizde, ayn─▒ zamanda tabana da ihtiyac─▒n─▒z olur ve resminizi katmanl─▒ bir dosya sistemi kullanarak taban─▒n ├╝zerine katlar: yukar─▒da da belirtildi─či gibi Docker, AUFS kullan─▒r. AUFS farkl─▒ katmanlar─▒ bir araya getirir ve istedi─činizi elde edersiniz; Sadece ├žal─▒┼čt─▒rman gerek. Daha fazla g├Âr├╝nt├╝ eklemeye devam edebilirsiniz (katmanlar) ve sadece farklar─▒ kaydetmeye devam eder. Docker, genellikle bir kay─▒t defterinden haz─▒r g├Âr├╝nt├╝ler ├╝zerine kuruldu─čundan, nadiren t├╝m i┼čletim sistemini kendiniz "yakalaman─▒z" gerekir.


3269







─░yi cevaplar. Sadece kab─▒n VM ile g├Âr├╝nt├╝ temsilini elde etmek i├žin a┼ča─č─▒dakilere bir g├Âz at─▒n.


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin

Kaynak


511







Sanalla┼čt─▒rma ve kapsay─▒c─▒lar─▒n d├╝┼č├╝k seviyede nas─▒l ├žal─▒┼čt─▒─č─▒n─▒ anlamak yararl─▒ olabilir. Bu bir├žok ┼čeyi temizler.

Not: A┼ča─č─▒da tarif ederken biraz sadele┼čtiriyorum. Daha fazla bilgi i├žin referanslara bak─▒n.

Sanalla┼čt─▒rma d├╝┼č├╝k seviyede nas─▒l ├žal─▒┼č─▒r?

Bu durumda, VM y├Âneticisi CPU halkas─▒n─▒ 0 (ya da daha yeni CPU'larda "k├Âk modu") devral─▒r ve misafir i┼čletim sisteminin kendi donan─▒m─▒na sahip oldu─ču yan─▒lsamas─▒n─▒ yaratmak i├žin konuk i┼čletim sistemi taraf─▒ndan yap─▒lan t├╝m ayr─▒cal─▒kl─▒ ├ža─čr─▒lar─▒ engeller. E─členceli ger├žek: 1998'den ├Ânce x86 mimarisinde bunu ba┼čarman─▒n imkans─▒z oldu─ču d├╝┼č├╝n├╝l├╝yordu, ├ž├╝nk├╝ b├Âyle bir m├╝dahaleyi yapman─▒n bir yolu yoktu. VMWare'deki millet, bunu ger├žekle┼čtirmek i├žin konuk i┼čletim sisteminin ayr─▒cal─▒kl─▒ ├ža─čr─▒lar─▒n─▒ yapmak i├žin y├╝r├╝t├╝lebilir baytlar─▒ bellekte yeniden yazma fikri olan ilk ki┼čiydi .

Net etki, sanalla┼čt─▒rman─▒n ayn─▒ donan─▒m ├╝zerinde tamamen farkl─▒ iki i┼čletim sistemi ├žal─▒┼čt─▒rman─▒za izin vermesidir. Her konuk i┼čletim sistemi t├╝m ├Âny├╝kleme, y├╝kleme ├žekirde─či vb. ─░┼člemlerden ge├žer. ├ľrne─čin, konuk i┼čletim sistemi, ev sahibi i┼čletim sistemine veya di─čer konuklara tam eri┼čim sa─člayamaz ve i┼čleri kar─▒┼čt─▒rabilir.

Konteyn─▒rlar d├╝┼č├╝k seviyede nas─▒l ├žal─▒┼č─▒r?

Yakla┼č─▒k 2006 , Google'da ├žal─▒┼čanlar─▒n baz─▒lar─▒n─▒n da dahil insanlar yeni kernel d├╝zeyi ├Âzelli─či olarak adland─▒r─▒lan uygulanan ad alanlar─▒n─▒ (ancak fikri uzun ├Âncesinde FreeBSD var olan ). ─░┼čletim sisteminin bir i┼člevi, a─č ve disk gibi global kaynaklar─▒n s├╝re├žlerle payla┼č─▒lmas─▒na izin vermektir. Peki ya bu k├╝resel kaynaklar, sadece ayn─▒ isim alan─▒nda ├žal─▒┼čan s├╝re├žler taraf─▒ndan g├Âr├╝lebilmeleri i├žin isim alanlar─▒na sar─▒lm─▒┼člarsa? Diyelim ki, bir disk par├žas─▒ al─▒p bunu X ad alan─▒na ve ard─▒ndan Y ad─▒nda ├žal─▒┼čan i┼člemlere g├Âremiyor veya eri┼čemiyor. Benzer ┼čekilde, X alan─▒ i├žindeki i┼člemler, Y alan─▒ i├žin ayr─▒lan bellekteki hi├žbir ┼čeye eri┼čemez. Tabii ki, X'deki i┼člemler, Y alan─▒ i├žindeki i┼člemleri g├Âremez veya konu┼čamaz. Bu, k├╝resel kaynaklar i├žin bir t├╝r sanalla┼čt─▒rma ve yal─▒t─▒m sa─člar. Liman i┼č├žili─či ┼ču ┼čekilde ├žal─▒┼č─▒r: Her bir konteyner kendi ad alan─▒nda ├žal─▒┼č─▒r ancak di─čer t├╝m konteynerlerle ayn─▒ ├žekirde─či kullan─▒r . ├çekirdek, s├╝rece atanan ad alan─▒n─▒ bildi─činden ve API ├ža─čr─▒lar─▒ s─▒ras─▒nda i┼člemin yaln─▒zca kendi ad alan─▒ndaki kaynaklara eri┼čebildi─činden emin oldu─čundan, yal─▒t─▒m ger├žekle┼čir.

VM'ler ile konteynerlerin s─▒n─▒rlamalar─▒ ┼čimdi a├ž─▒k olmal─▒d─▒r: VM'lerde oldu─ču gibi konteynerlerde tamamen farkl─▒ bir i┼čletim sistemi ├žal─▒┼čt─▒ramazs─▒n─▒z. Ancak yapabilirsiniz ayn─▒ ├žekirdek payla┼čan ├ž├╝nk├╝ Linux farkl─▒ da─č─▒t─▒mlar ├žal─▒┼čt─▒r─▒n. ─░zolasyon seviyesi VM'deki kadar g├╝├žl├╝ de─čildir. Asl─▒nda, "misafir" konteynerin erken uygulamalarda ev sahipli─či yapmas─▒ i├žin bir yol vard─▒. Ayr─▒ca, yeni bir konteyner y├╝kledi─činizde, i┼čletim sisteminin t├╝m yeni kopyas─▒n─▒n VM'deki gibi ba┼člamayaca─č─▒n─▒ da g├Ârebilirsiniz. B├╝t├╝n kaplar ayn─▒ ├žekirde─či payla┼č─▒r . Bu y├╝zden konteyn─▒rlar hafif. Ayr─▒ca VM'den farkl─▒ olarak, ├Ânemli miktarda bellek belle─čini kaplara ├Ânceden ay─▒rman─▒z gerekmez, ├ž├╝nk├╝ yeni i┼čletim sistemi kopyas─▒ ├žal─▒┼čt─▒rm─▒yoruz. Bu, bir i┼čletim sistemi ├╝zerinde binlerce kapsay─▒c─▒ ├žal─▒┼čt─▒r─▒rken, kendi i┼čletim sistemindeki ayr─▒ bir i┼čletim sistemi kopyas─▒ kullan─▒yor olmam─▒z durumunda yapamayacaklar─▒ bir alan─▒ i┼čaretlemi┼člerdir.


434







Ken Cochrane'nin cevab─▒n─▒ be─čendim.

Ancak, burada ayr─▒nt─▒l─▒ olarak ele al─▒nmayan ilave bir bak─▒┼č a├ž─▒s─▒ eklemek istiyorum. Bence Docker, t├╝m s├╝re├žte de farkl─▒. VM'lerin aksine, Docker (yaln─▒zca) donan─▒m─▒n optimal kaynak payla┼č─▒m─▒ndan ibaret de─čildir, ayr─▒ca ambalaj uygulamas─▒ i├žin bir "sistem" sa─člar (tercih edilir, ancak bir mikro servis k├╝mesi olarak bir zorunluluk de─čildir).

Bana g├Âre rpm, Debian paketleri, Maven , npm + Git gibi geli┼čtirici odakl─▒ ara├žlar ile Puppet , VMware, Xen gibi ops ara├žlar─▒ aras─▒ndaki bo┼člu─ča uyuyor.

Neden yaz─▒l─▒m─▒ docker g├Âr├╝nt├╝s├╝ne da─č─▒tmak (do─čru terimse) tutarl─▒ bir ├╝retim ortam─▒na da─č─▒tmaktan daha kolay?

Sorunuz tutarl─▒ bir ├╝retim ortam─▒ oldu─čunu varsayar. Ama tutarl─▒ tutmak nas─▒l? Boru hatt─▒ndaki a┼čamalardan (> 10) bir miktar sunucu ve uygulamaya dikkat edin.

Bunu senkronize etmek i├žin Kukla, A┼č├ž─▒ veya kendi haz─▒rlama komut dosyalar─▒n─▒z, yay─▒nlanmam─▒┼č kurallar ve / veya ├žok say─▒da dok├╝mantasyon gibi ┼čeyler kullanmaya ba┼člayacaks─▒n─▒z . Teoride sunucular s├╝resiz olarak ├žal─▒┼čabilir ve tamamen tutarl─▒ ve g├╝ncel tutulabilir. Uygulama bir sunucunun konfig├╝rasyonunu tamamen y├Ânetemez, bu nedenle konfig├╝rasyon kaymas─▒ ve ├žal─▒┼čan sunucularda beklenmeyen de─či┼čiklikler i├žin kayda de─čer bir kapsam vard─▒r.

Yani bundan ka├ž─▒nmak i├žin bilinen bir ├Ârnek var, s├Âzde de─či┼čmez sunucu . Ancak de─či┼čmez sunucu deseni sevilmedi. ├ço─čunlukla Docker'dan ├Ânce kullan─▒lan VM'lerin k─▒s─▒tlamalar─▒ nedeniyle. Birka├ž gigabayt b├╝y├╝k g├Âr├╝nt├╝ ile u─čra┼čmak, bu b├╝y├╝k g├Âr├╝nt├╝leri hareket ettirmek, sadece uygulamadaki baz─▒ alanlar─▒ de─či┼čtirmek i├žin ├žok zahmetliydi. Anla┼č─▒labilir ...

Bir Docker ekosistemiyle, gigabaytlar─▒n "k├╝├ž├╝k de─či┼čikliklerde" (te┼čekk├╝rler auf ve Kay─▒t Defteri) etrafta dola┼čmalar─▒na gerek kalmaz ve uygulamalar─▒ ├žal─▒┼čma zaman─▒nda Docker kab─▒na paketleyerek performans─▒ kaybetme konusunda endi┼čelenmenize gerek yoktur. Bu g├Âr├╝nt├╝n├╝n s├╝r├╝mleri i├žin endi┼čelenmenize gerek yok.

Ve son olarak, Linux diz├╝st├╝ bilgisayar─▒n─▒zda bile karma┼č─▒k ├╝retim ortamlar─▒n─▒ ├žo─čaltabileceksiniz (durumunuzda i┼če yaramazsa beni arama;)

Ve tabii ki VMÔÇÖlerde Docker konteynerlerini ba┼člatabilirsiniz (bu iyi bir fikir). Sunucu d├╝zeyinde provizyonunuzu VM d├╝zeyinde azalt─▒n. Yukar─▒dakilerin t├╝m├╝ Docker taraf─▒ndan y├Ânetilebilir.

PS Bu arada Docker, LXC yerine kendi "libcontainer" uygulamas─▒n─▒ kullan─▒yor. Ancak LXC hala kullan─▒labilir durumda.


319







Docker bir sanalla┼čt─▒rma y├Ântemi de─čildir. Kapsay─▒c─▒ tabanl─▒ sanalla┼čt─▒rmay─▒ veya i┼čletim sistemi d├╝zeyinde sanalla┼čt─▒rmay─▒ ger├žekten uygulayan di─čer ara├žlara dayan─▒r. Bunun i├žin, Docker ba┼člang─▒├žta LXC s├╝r├╝c├╝s├╝n├╝ kullan─▒yordu, ard─▒ndan ┼čimdi runc olarak yeniden adland─▒r─▒lan libcontainer'a ta┼č─▒nd─▒. Docker, ├Âncelikle uygulama kapsay─▒c─▒lar─▒ i├žerisindeki uygulamalar─▒n da─č─▒t─▒m─▒n─▒ otomatikle┼čtirmeye odaklan─▒r. Uygulama kaplar─▒ tek bir servisi paketlemek ve ├žal─▒┼čt─▒rmak i├žin tasarlanm─▒┼čt─▒r, oysa sistem kaplar─▒ sanal makineler gibi birden ├žok i┼člemi ├žal─▒┼čt─▒rmak i├žin tasarlanm─▒┼čt─▒r. Bu nedenle, Docker, konteynerli sistemlerde bir konteyner y├Ânetimi veya uygulama da─č─▒t─▒m arac─▒ olarak kabul edilir.

Bunun di─čer sanalla┼čt─▒rmalardan ne kadar farkl─▒ oldu─čunu bilmek i├žin, sanalla┼čt─▒rmay─▒ ve t├╝rlerini g├Âzden ge├žirelim. O zaman, aradaki fark─▒n ne oldu─čunu anlamak daha kolay olurdu.

sanalla┼čt─▒rma

Tasarlanan bi├žiminde, birden fazla uygulaman─▒n ayn─▒ anda ├žal─▒┼čmas─▒na izin vermek i├žin ana kareleri mant─▒ksal olarak b├Âlme y├Ântemi olarak kabul edildi. Ancak, ┼čirketler ve a├ž─▒k kaynak topluluklar─▒ ayr─▒cal─▒kl─▒ talimatlar─▒n bir ┼čekilde veya ba┼čka bir ┼čekilde ele al─▒nmas─▒na ve birden fazla i┼čletim sisteminin ayn─▒ anda tek bir x86 tabanl─▒ sistemde ├žal─▒┼čmas─▒na izin verilmesine izin verdi─činde bu senaryo ├Ânemli ├Âl├ž├╝de de─či┼čti.

hiperviz├Âr

Hiper y├Ânetici, konuk sanal makinelerin ├╝zerinde ├žal─▒┼čt─▒─č─▒ sanal ortam─▒ yarat─▒r. Konuk sistemlerini denetler ve kaynaklar─▒n misafirlere gerekti─či ┼čekilde tahsis edilmesini sa─člar. Hiper y├Ânetici, fiziksel makine ile sanal makineler aras─▒nda oturur ve sanal makinelere sanalla┼čt─▒rma hizmetleri sunar. Bunu ger├žekle┼čtirmek i├žin, sanal makinelerde konuk i┼čletim sistemi i┼člemlerini durdurur ve ana makinenin i┼čletim sistemindeki i┼člemi taklit eder.

├ľncelikle bulutta sanalla┼čt─▒rma teknolojilerinin h─▒zl─▒ geli┼čimi, Xen, VMware Player, KVM vb. Gibi hiper denetleyicilerin yard─▒m─▒yla tek bir fiziksel sunucuda birden fazla sanal sunucunun olu┼čturulmas─▒na izin vererek sanalla┼čt─▒rman─▒n kullan─▒m─▒n─▒ daha da art─▒rd─▒. Intel VT ve AMD-V gibi ticari i┼člemcilere donan─▒m deste─činin dahil edilmesi.

Sanalla┼čt─▒rma T├╝rleri

Sanalla┼čt─▒rma y├Ântemi, donan─▒m─▒ konuk i┼čletim sistemine nas─▒l taklit etti─či ve konuk ├žal─▒┼čma ortam─▒n─▒ taklit etti─či temel al─▒narak s─▒n─▒fland─▒r─▒labilir. ├ľncelikle, ├╝├ž t├╝r sanalla┼čt─▒rma vard─▒r:

  • em├╝lasyon
  • sanalla┼čt─▒rma
  • Konteyner tabanl─▒ sanalla┼čt─▒rma

em├╝lasyon

Tam sanalla┼čt─▒rma olarak da bilinen ├Âyk├╝nme, sanal makine i┼čletim sistemi ├žekirde─čini tamamen yaz─▒l─▒mda ├žal─▒┼čt─▒r─▒r. Bu tipte kullan─▒lan hiper y├Ânetici Tip 2 hiper y├Ânetici olarak bilinir. Konuk i┼čletim sistemi ├žekirdek kodunun yaz─▒l─▒m talimatlar─▒na d├Ân├╝┼čt├╝r├╝lmesinden sorumlu ana bilgisayar i┼čletim sisteminin ├╝zerine kuruludur. ├çeviri tamamen yaz─▒l─▒mla yap─▒l─▒r ve donan─▒m gerektirmez. Em├╝lasyon, taklit edilen ortam─▒ destekleyen herhangi bir de─či┼čtirilmemi┼č i┼čletim sisteminin ├žal─▒┼čt─▒r─▒lmas─▒n─▒ m├╝mk├╝n k─▒lar. Bu sanalla┼čt─▒rma t├╝r├╝n├╝n dezavantaj─▒, di─čer sanalla┼čt─▒rma t├╝rlerine k─▒yasla performans─▒n d├╝┼čmesine neden olan ek sistem kaynak y├╝k├╝d├╝r.


em├╝lasyon

Bu kategorideki ├Ârnekler aras─▒nda VMware Player, VirtualBox, QEMU, Bochs, Parallels, vs.

sanalla┼čt─▒rma

Tip 1 hiper y├Ânetici olarak da bilinen paravirtualization, do─črudan donan─▒ma veya ÔÇť├ž─▒plak metalÔÇŁ e dayan─▒r ve ├╝zerinde ├žal─▒┼čan sanal makinelere do─črudan sanalla┼čt─▒rma hizmetleri sunar. ─░┼čletim sistemine, sanalla┼čt─▒r─▒lm─▒┼č donan─▒ma ve ger├žek donan─▒ma, optimum performans elde etmek i├žin i┼čbirli─či yapmas─▒na yard─▒mc─▒ olur. Bu hiperviz├Ârler tipik olarak daha az yer kaplar ve kendileri i├žin kapsaml─▒ kaynaklar gerektirmez.

Bu kategorideki ├Ârnekler aras─▒nda Xen, KVM, vs.


sanalla┼čt─▒rma

Konteyner Tabanl─▒ Sanalla┼čt─▒rma

─░┼čletim sistemi d├╝zeyinde sanalla┼čt─▒rma olarak da bilinen kap tabanl─▒ sanalla┼čt─▒rma, tek bir i┼čletim sistemi ├žekirde─činde birden fazla yal─▒t─▒lm─▒┼č y├╝r├╝tme sa─člar. M├╝mk├╝n olan en iyi performans ve yo─čunlu─ča sahiptir ve dinamik kaynak y├Ânetimine sahiptir. Bu t├╝r sanalla┼čt─▒rma taraf─▒ndan sa─članan yal─▒t─▒lm─▒┼č sanal y├╝r├╝tme ortam─▒na kapsay─▒c─▒ denir ve izlenen bir s├╝re├žler grubu olarak g├Âr├╝lebilir.


Konteyner tabanl─▒ sanalla┼čt─▒rma

Linux ├žekirde─či 2.6.24 s├╝r├╝m├╝ne eklenen ad alan─▒ ├Âzelli─či ile bir konteyner kavram─▒ m├╝mk├╝n k─▒l─▒nm─▒┼čt─▒r. Kap, her i┼čleme kimli─čini ekler ve her sistem ├ža─čr─▒s─▒na yeni eri┼čim denetimi denetimleri ekler. Daha ├Ânce global ad alanlar─▒n─▒n ayr─▒ ├Ârneklerini olu┼čturmaya izin veren clone () sistem ├ža─čr─▒s─▒ taraf─▒ndan eri┼čilir .

Ad alanlar─▒ bir├žok farkl─▒ ┼čekilde kullan─▒labilir, ancak en yayg─▒n yakla┼č─▒m, kab─▒n d─▒┼č─▒ndaki nesnelere g├Âr├╝n├╝rl├╝─č├╝ veya eri┼čimi olmayan izole edilmi┼č bir kap olu┼čturmakt─▒r. Kab─▒n i├žinde ├žal─▒┼čan i┼člemler normal bir Linux sisteminde ├žal─▒┼č─▒yor gibi g├Âr├╝nmekle birlikte, temel ├žekirde─či di─čer ad t├╝rlerinde bulunan i┼člemlerle payla┼č─▒yorlar, di─čer nesneler i├žin de ayn─▒. ├ľrne─čin, ad alanlar─▒n─▒ kullan─▒rken, kab─▒n i├žindeki k├Âk kullan─▒c─▒ kab─▒n d─▒┼č─▒nda k├Âk olarak i┼člem g├Ârmez ve ek g├╝venlik sa─člar.

Konteyner tabanl─▒ sanalla┼čt─▒rmay─▒ etkinle┼čtirecek bir sonraki ana bile┼čen olan Linux Kontrol Gruplar─▒ (cgroups) alt sistemi, i┼člemleri gruplamak ve toplam kaynak t├╝ketimini y├Ânetmek i├žin kullan─▒l─▒r. S─▒k kullan─▒lan bellek ve CPU t├╝ketimini s─▒n─▒rlamak i├žin kullan─▒l─▒r. Konteyn─▒rlanm─▒┼č bir Linux sistemi sadece bir ├žekirde─če sahip oldu─čundan ve ├žekirdek konteyn─▒rlara tam olarak g├Âr├╝nebildi─činden, yaln─▒zca bir seviye kaynak tahsisi ve ├žizelgeleme vard─▒r.

Linux konteynerleri i├žin LXC, LXD, systemd-nspawn, lmctfy, Warden, Linux-VServer, OpenVZ, Docker, vb. Gibi ├že┼čitli y├Ânetim ara├žlar─▒ bulunmaktad─▒r.

Kapsay─▒c─▒lar vs Sanal Makineler

Sanal bir makineden farkl─▒ olarak, bir kab─▒n i┼čletim sistemi ├žekirde─čini ba┼člatmas─▒na gerek yoktur, bu nedenle kaplar bir saniyeden daha k─▒sa s├╝rede olu┼čturulabilir. Bu ├Âzellik, konteyner tabanl─▒ sanalla┼čt─▒rmay─▒ di─čer sanalla┼čt─▒rma yakla┼č─▒mlar─▒ndan benzersiz ve istenen hale getirir.

Kap tabanl─▒ sanalla┼čt─▒rma, ana makineye ek y├╝k getirmedi─činden veya ├žok fazla eklenmedi─činden, kap tabanl─▒ sanalla┼čt─▒rma yerel performansa yak─▒n bir performans g├Âsterir.

Kap tabanl─▒ sanalla┼čt─▒rma i├žin, di─čer sanalla┼čt─▒rmalardan farkl─▒ olarak ek bir yaz─▒l─▒m gerekmez.

Bir ana makinedeki t├╝m kaplar, ana makinenin zamanlay─▒c─▒s─▒n─▒ payla┼čarak ek kaynaklara ihtiya├ž duymaz.

Konteyner durumlar─▒ (Docker veya LXC g├Âr├╝nt├╝leri), sanal makine resimlerine k─▒yasla daha k├╝├ž├╝k boyutlu oldu─čundan konteyner resimlerinin da─č─▒t─▒lmas─▒ kolayd─▒r.

Kaplarda kaynak y├Ânetimi, gruplar ├╝zerinden ger├žekle┼čtirilir. Kruplar, konteynerlerin kendilerine tahsis edilenden daha fazla kaynak t├╝ketmesine izin vermez. Ancak, ┼ču an itibariyle, ana makinenin t├╝m kaynaklar─▒ sanal makinelerde g├Âr├╝lebilir ancak kullan─▒lamaz. Bu , ayn─▒ anda hem kaplarda hem de ana makinede ├žal─▒┼čt─▒r─▒larak top veya ger├žekle┼čtirilerek ger├žekle┼čtirilebilir htop . T├╝m ortamlardaki ├ž─▒kt─▒lar benzer g├Âr├╝necektir.

G├╝ncelle┼čtirme:

Docker Linux olmayan sistemlerde kaplar─▒ nas─▒l ├žal─▒┼čt─▒r─▒r?

Linux ├žekirde─čindeki ├Âzellikler nedeniyle kaplar m├╝mk├╝n ise, bariz soru, Linux olmayan sistemlerin kaplar─▒ nas─▒l ├žal─▒┼čt─▒rd─▒─č─▒d─▒r. Hem Docker for Mac hem de Windows, kaplar─▒ ├žal─▒┼čt─▒rmak i├žin Linux VM'leri kullan─▒r. Docker Toolbox, Virtual Box VM'lerinde kaplar─▒ ├žal─▒┼čt─▒rmak i├žin kullan─▒l─▒r. Ancak, en son Docker Windows'ta Hyper-V ve Mac'te Hypervisor.framework kullan─▒yor.

┼×imdi, Mac i├žin Docker'─▒n kaplar─▒ nas─▒l ├žal─▒┼čt─▒rd─▒─č─▒n─▒ ayr─▒nt─▒l─▒ olarak a├ž─▒klayay─▒m.

Mac i├žin Docker , hiper y├Ânetici ├Âzelliklerini taklit etmek i├žin https://github.com/moby/hyperkit'i , Hyperkit ise ├Âz├╝nde hypervisor.framework'yi kullan─▒r. Hypervisor.framework, Mac'in yerel hiperviz├Âr ├ž├Âz├╝m├╝d├╝r. Hyperkit ayr─▒ca s─▒ras─▒yla ad alan─▒ a─č─▒na ve dosya sistemine VPNKit ve DataKit kullan─▒r.

Docker'─▒n Mac'te ├žal─▒┼čt─▒─č─▒ Linux VM salt okunurdur. Ancak, ├žal─▒┼čt─▒rarak i├žine bash yapabilirsiniz:

screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty .

┼×imdi, bu VM'nin ├çekirdek s├╝r├╝m├╝n├╝ bile kontrol edebiliriz:

# uname -a Linux linuxkit-025000000001 4.9.93-linuxkit-aufs #1 SMP Wed Jun 6 16:86_64 Linux .

T├╝m VM'ler bu VM i├žinde ├žal─▒┼č─▒r.

Hypervisor.framework i├žin baz─▒ s─▒n─▒rlamalar var. Bu nedenle Docker, docker0 Mac'te a─č aray├╝z├╝n├╝ g├Âstermiyor. Yani, ana bilgisayardan kaplara eri┼čemezsiniz. ┼×u an itibariyle docker0 , yaln─▒zca VM i├žinde kullan─▒labilir.

Hyper-v, Windows'taki yerel hiperviz├Ârd├╝r. Ayr─▒ca, Linux sistemlerini yerel olarak ├žal─▒┼čt─▒rmak i├žin Windows 10'un yeteneklerinden yararlanmaya ├žal─▒┼č─▒yorlar.


213







Bu g├Ânderi ile VM'ler ve LXC'ler aras─▒nda baz─▒ farkl─▒l─▒klar ├žizece─čiz. ─░lk ├Ânce onlar─▒ tan─▒mlayal─▒m.

VM :

Sanal bir makine fiziksel bir bilgi i┼člem ortam─▒na ├Âyk├╝n├╝r, ancak CPU, bellek, sabit disk, a─č ve di─čer donan─▒m kaynaklar─▒ talepleri, bu istekleri temel fiziksel donan─▒ma ├ževiren bir sanalla┼čt─▒rma katman─▒ taraf─▒ndan y├Ânetilir.

Bu ba─člamda VM Misafir olarak, ├žal─▒┼čt─▒r─▒ld─▒─č─▒ ortam ise ana bilgisayar olarak adland─▒r─▒l─▒r.

LXC s:

Linux Containers (LXC), bir kontrol ana bilgisayar─▒nda (LXC ana bilgisayar─▒) birden fazla yal─▒t─▒lm─▒┼č Linux kapsay─▒c─▒s─▒n─▒n ├žal─▒┼čt─▒r─▒lmas─▒n─▒ m├╝mk├╝n k─▒lan i┼čletim sistemi d├╝zeyinde yeteneklerdir. Linux Containers, hiper denet├žiler gerektirmeyen VM'lere hafif bir alternatif olarak hizmet eder. Virtualbox, KVM, Xen vb.

┼×imdi, Alan taraf─▒ndan (Hangover serisinden Zach Galifianakis) uyu┼čturulmad─▒─č─▒ ve ge├žen y─▒l Vegas'ta bulunmad─▒─č─▒n─▒z s├╝rece, Linux kapsay─▒c─▒ teknolojisinin b├╝y├╝k ilgisini g├Âreceksiniz ve e─čer bir kapsay─▒c─▒ olaca─č─▒m Son birka├ž ay i├žinde d├╝nya ├žap─▒nda bir ├ž─▒lg─▒nl─▒k yaratan proje ┼č├Âyle: - Docker, bulut bili┼čim ortamlar─▒n─▒n sanal makineleri (VM) terk etmeleri ve daha d├╝┼č├╝k ek y├╝kleri ve potansiyel olarak daha iyi performanslar─▒ nedeniyle bunlar─▒ kaplarla de─či┼čtirmeleri gerekti─čine dair baz─▒ yank─▒lara yol a├žt─▒.

Fakat as─▒l soru ┼ču, uygulanabilir mi ?, mant─▒kl─▒ olacak m─▒?

a. LXC'ler bir Linux ├Ârne─čine dahil edilmi┼čtir. Linux'un farkl─▒ lezzetleri olabilir (├Ârne─čin, bir CentOS sunucusundaki bir Ubuntu kab─▒, ancak hala Linux'tur.) Benzer ┼čekilde, Windows tabanl─▒ kaplar, VM'lere bakacak olursak, ┼čimdi daha geni┼č bir kapsama sahip ve hiperviz├Ârler i┼čletim sistemleri Linux veya Windows ile s─▒n─▒rl─▒ de─čildir.

b. LXC'ler genel giderlere d├╝┼č├╝kt├╝r ve VM'lere k─▒yasla daha iyi performansa sahiptir. Ara├žlar viz. LXC teknolojisinin omuzlar─▒ ├╝zerine in┼ča edilmi┼č olan Docker, geli┼čtiricilere uygulamalar─▒n─▒ y├╝r├╝tebilecekleri bir platform sa─člad─▒lar ve ayn─▒ zamanda insanlar─▒ ayn─▒ kaplar─▒ ├╝retim sunucular─▒na ya da veri merkezlerine yerle┼čtirmelerini sa─člayacak bir ara├žla operasyonlar─▒n─▒ g├╝├žlendirdi. Bir uygulamay─▒ ├žal─▒┼čt─▒ran bir geli┼čtirici, bir uygulamay─▒ ├Âny├╝kleme ve test etme ile bu uygulamay─▒ sorunsuz bir ┼čekilde kullanan bir operasyon ├žal─▒┼čan─▒ aras─▒ndaki deneyimi ya┼čamaya ├žal─▒┼č─▒r, ├ž├╝nk├╝ t├╝m s├╝rt├╝nmenin yatt─▒─č─▒ ve DevOps'un amac─▒ bu silolar─▒ par├žalamak oldu─ču yerdir.

Bu nedenle, en iyi yakla┼č─▒m, bulut altyap─▒ sa─člay─▒c─▒lar─▒n─▒n, her biri belirli i┼č y├╝klerini ve senaryolar─▒ ele almak i├žin uygun olduklar─▒ i├žin, VM'lerin ve LXC'nin uygun bir ┼čekilde kullan─▒lmas─▒n─▒ savunmalar─▒ gerekti─čidir.

VM'leri terk etmek ┼ču an i├žin pratik de─čil. Dolay─▒s─▒yla hem VM'ler hem de LXC'ler kendi bireysel varl─▒klar─▒na ve ├Ânemlerine sahiptir.


140







Buradaki cevaplar─▒n ├žo─ču sanal makineler hakk─▒nda konu┼čuyor. Docker'─▒ kullanman─▒n son birka├ž senesinde bana en ├žok yard─▒mc─▒ olan bu soruya bir tek cevap verece─čim. Bu:

Docker, sanal makine de─čil, bir i┼člemi y├╝r├╝tmenin sadece s├╝sl├╝ bir yoludur.

┼×imdi, bunun ne anlama geldi─čini biraz daha a├ž─▒klayay─▒m. Sanal makineler kendi canavarlar─▒d─▒r. Docker'─▒n ne oldu─čunu a├ž─▒klamaktan, sanal bir makinenin ne oldu─čunu a├ž─▒klamaktan daha ├žok anlaman─▒za yard─▒mc─▒ olaca─č─▒m─▒ hissediyorum . ├ľzellikle, burada "sanal makine" derken birinin ne anlama geldi─čini tam olarak anlatan ├žok say─▒da iyi cevap oldu─čundan. Yani...

Bir Docker kab─▒, yaln─▒zca ana sistemin ├žekirde─čindeki gruplar─▒ kullanarak i┼člemlerin geri kalan─▒ndan b├Âl├╝mlere ayr─▒lan bir i┼člemdir (ve ├žocuklar─▒) . ps aux Ana makinede ├žal─▒┼čt─▒rarak Docker konteyner i┼člemlerinizi ger├žekten g├Ârebilirsiniz . ├ľrne─čin, apache2 "bir kapta" ba┼člatmak, yaln─▒zca apache2 ana bilgisayarda ├Âzel bir i┼člem olarak ba┼člar. Sadece makinedeki di─čer i┼člemlerden b├Âl├╝mlere ayr─▒lm─▒┼čt─▒r. Konteyn─▒rlar─▒n─▒z─▒n konteyn─▒rlanm─▒┼č i┼čleminizin ├Âmr├╝ d─▒┼č─▒nda olmad─▒─č─▒na dikkat etmek ├Ânemlidir. S├╝reciniz ├Âld├╝─č├╝nde, kab─▒n─▒z ├Âl├╝r. Bunun nedeni Docker'─▒n pid 1 konteynerinizin i├žinde uygulaman─▒zla yer de─či┼čtirmesidir ( pid 1 normalde init sistemidir). Bu son nokta hakk─▒nda pid 1 ├žok ├Ânemlidir.

Bildi─čim kadar─▒yla bu konteyner i┼člemlerin her taraf─▒ndan kullan─▒lan dosya sistemi, Docker kullan─▒r unionfs Bir yapt─▒─č─▒n─▒zda neyi sen indirilmesi olan g├Âr├╝nt├╝leri -backed docker pull ubuntu . Her "g├Âr├╝nt├╝", yaln─▒zca bir dizi katman ve ilgili meta verilerdir. Katmanlama kavram─▒ burada ├žok ├Ânemlidir. Her katman, alt─▒ndaki katmandan yaln─▒zca bir de─či┼čikliktir. ├ľrne─čin, bir Docker kab─▒ olu┼čtururken Dockerfile'nizdeki bir dosyay─▒ sildi─činizde, asl─▒nda sadece "bu dosya silindi" diyen son katman─▒n ├╝st├╝ne bir katman olu┼čturursunuz. Bu arada, bu nedenle b├╝y├╝k bir dosyay─▒ dosya sisteminizden silebilirsiniz, ancak g├Âr├╝nt├╝ ayn─▒ miktarda disk alan─▒ kapl─▒yor. Dosya hala orada, ge├žerli olan─▒n alt─▒ndaki katmanlarda. Katmanlar─▒n kendisi sadece dosyalar─▒n tarball'lar─▒d─▒r. Bunu docker save --output /tmp/ubuntu.tar ubuntu ve sonra ile test edebilirsiniz cd /tmp && tar xvf ubuntu.tar . Sonra etrafa bir g├Âz atabilirsin. Uzun karmalar gibi g├Âr├╝nen t├╝m dizinler asl─▒nda bireysel katmanlard─▒r. Her biri, belirli katman hakk─▒nda bilgi i├žeren files ( layer.tar ) ve metadata ( json ) i┼člevlerini i├žerir . Bu katmanlar sadece dosya sistemindeki de─či┼čiklikleri, orijinal durumunun "├╝st├╝nde" bir katman olarak kaydedilen tan─▒mlamaktad─▒r. "Ge├žerli" verileri okurken, dosya sistemi verileri yaln─▒zca en ├╝stteki de─či┼čiklik katmanlar─▒na bak─▒yormu┼č gibi okur. Bu nedenle, dosya hala "├Ânceki" katmanlarda mevcut olmas─▒na ra─čmen silinmi┼č gibi g├Âr├╝nmektedir, ├ž├╝nk├╝ dosya sistemi yaln─▒zca en ├╝st katmanlara bakmaktad─▒r. Bu, tamamen farkl─▒ kapsay─▒c─▒lar─▒n dosya sistemi katmanlar─▒n─▒ payla┼čmalar─▒na izin verir, her kapsay─▒c─▒daki en ├╝st katmanlardaki dosya sisteminde baz─▒ ├Ânemli de─či┼čiklikler olmu┼č olsa da. Bu, kaplar─▒n─▒z temel g├Âr├╝nt├╝ katmanlar─▒n─▒ payla┼čt─▒─č─▒nda size bir ton disk alan─▒ kazand─▒r─▒r. Bununla birlikte, dizinleri ve dosyalar─▒ ana sistemden konteynerinize birimler yoluyla ba─člad─▒─č─▒n─▒zda, bu birimler UnionFS'yi "atlar", b├Âylece de─či┼čiklikler katmanlarda depolanmaz.

Docker'da a─č ba─člant─▒s─▒ docker0 , ana bilgisayardaki her kap i├žin bir ethernet k├Âpr├╝s├╝ ( ana bilgisayarda ad─▒ verilir ) ve sanal arabirimler kullan─▒larak ger├žekle┼čtirilir. docker0 Konteynerlerinizin birbirleriyle "aralar─▒nda" ileti┼čim kurmalar─▒ i├žin sanal bir alt a─č olu┼čturur . Burada, a─č─▒n─▒z i├žin ├Âzel alt a─člar olu┼čturma ve kapsay─▒c─▒n─▒z─▒n do─črudan eri┼čebilmesi i├žin ana makinenizin a─č y─▒─č─▒n─▒ "payla┼čma" ├Âzelli─či de dahil olmak ├╝zere bir├žok a─č se├žene─či vard─▒r.

Docker ├žok h─▒zl─▒ hareket ediyor. Onun belgeler ┼čimdiye kadar g├Ârd├╝─č├╝m en iyi belgelerin bir k─▒sm─▒ bu. Genel olarak iyi yaz─▒lm─▒┼č, ├Âzl├╝ ve do─čru. Daha fazla bilgi i├žin mevcut belgelere g├Âz atman─▒z─▒ ve Y─▒─č─▒n Ta┼čmas─▒ dahil olmak ├╝zere ├ževrimi├ži okudu─čunuz herhangi bir ┼čeyin belgelerine g├╝venmenizi ├Âneririz. ├ľzel sorular─▒n─▒z varsa #docker , Freenode IRC'ye kat─▒lman─▒z─▒ ve orada sorman─▒z─▒ ┼čiddetle tavsiye ederim (bunun i├žin Freenode'nin web sohbetini bile kullanabilirsiniz !).


126







Docker, bir uygulamay─▒ t├╝m ba─č─▒ml─▒l─▒klar─▒ ile kapsar.

Sanalla┼čt─▒r─▒c─▒, normalde ├ž─▒plak metal bir makinede ├žal─▒┼čt─▒rabildi─či uygulamalar─▒ ├žal─▒┼čt─▒rabilen bir i┼čletim sistemini kapsar.


82







─░kisi de ├žok farkl─▒. Docker hafiftir ve LXC / libcontainer kullan─▒r (├žekirdek ad alan─▒n─▒ ve gruplar─▒n─▒ kullan─▒r) ve hypervisor, KVM gibi makine / donan─▒m ├Âyk├╝nmesi yoktur. A─č─▒r olan Xen.

Docker ve LXC, daha ├žok korumal─▒ alan, konteyner ve kaynak yal─▒t─▒m─▒ i├žindir. IPC, NS (mount), a─č, PID, UTS vb. ─░├žin ad alan─▒ sa─člayan ana bilgisayar i┼čletim sisteminin (┼ču anda yaln─▒zca Linux ├žekirde─či) klon API'sini kullan─▒r.

Peki ya bellek, G / ├ç, CPU vb. Belirli kaynak (CPU, bellek, vb.) ┼×artnamesi / k─▒s─▒tlamas─▒ olan gruplar olu┼čturabilece─činiz ve s├╝re├žlerinizi oraya koyabilece─činiz gruplar kullan─▒larak kontrol edilir. LXC'nin ├╝st├╝ne, Docker bir depolama arka ucu ( http://www.projectatomic.io/docs/filesystems/ ), ├Ârne─čin, farkl─▒ mount ad alanlar─▒ aras─▒nda katman ekleyebilece─činiz ve katmanlar─▒ payla┼čabilece─činiz birle┼čik dosya sistemi sunar.

Bu, temel g├Âr├╝nt├╝lerin tipik olarak salt okunur oldu─ču ve yaln─▒zca kaptaki bir ┼čeyi de─či┼čtirdi─či zaman, okuma-yazma b├Âl├╝m├╝ne bir ┼čey yazaca─č─▒ (yazma ├╝zerine kopyalamak) olan g├╝├žl├╝ bir ├Âzelliktir. Ayn─▒ zamanda, g├Âr├╝nt├╝lerin kaydedilmesi ve s├╝r├╝mlenmesi gibi bir├žok ba┼čka paketleyici sa─člar.

Normal LXC'de, baz─▒ rootflarla gelmeniz veya rootf'lar─▒ payla┼čman─▒z ve payla┼čman─▒z gerekti─činde de─či┼čikliklerin di─čer kaplara yans─▒t─▒lmas─▒ gerekir. Bu eklenen ├Âzelliklerden dolay─▒ Docker, LXC'den daha pop├╝ler. LXC, a─č ve UI gibi d─▒┼č varl─▒klara maruz kalan s├╝re├žler etraf─▒nda g├╝venlik sa─člamak i├žin yerle┼čik ortamlarda pop├╝lerdir. Docker, tutarl─▒ ├╝retim ortam─▒n─▒n beklendi─či bulut ├žok kirac─▒l─▒k ortam─▒nda pop├╝lerdir.

Normal bir VM (├Ârne─čin, VirtualBox ve VMware) bir hiper denetleyici kullan─▒r ve ilgili teknolojiler ilk i┼čletim sistemi (ana i┼čletim sistemi i┼čletim sistemi veya misafir i┼čletim sistemi 0) i├žin ilk katman olan ana makine yaz─▒l─▒m─▒ veya ana i┼čletim sistemi i┼čletim sisteminde ├žal─▒┼čan bir yaz─▒l─▒ma sahiptir. Konuk i┼čletim sistemlerine CPU, USB / aksesuar, bellek, a─č vb. donan─▒m em├╝lasyonu sa─člar. VM'ler hala y├╝ksek g├╝venlikli ├žok kirac─▒l─▒ ortamlarda (2015 itibariyle) pop├╝lerdir.

Docker / LXC neredeyse ucuz herhangi bir donan─▒mda ├žal─▒┼čt─▒r─▒labilir (daha yeni bir ├žekirde─če sahip oldu─čunuz s├╝rece 1 GB'den az bellek de iyidir) ve normal VM'lerin anlaml─▒ bir ┼čey yapmas─▒ i├žin en az 2 GB belle─če vb. ─░htiya├ž vard─▒r. . Ancak, ana bilgisayar i┼čletim sistemindeki Docker deste─či, Windows'taki i┼čletim sistemlerinde (Kas─▒m 2014 itibariyle) mevcut de─čildir; sanal makine t├╝rleri Windows, Linux ve Mac'lerde ├žal─▒┼čt─▒r─▒labilir.

─░┼čte liman i┼č├žisi / haklardan bir resim:
─░┼čte haklardan bir resim


57







1. Hafif

Bu muhtemelen bir├žok liman i┼č├žisi ├Â─črenicisi i├žin ilk izlenimdir.

─░lk olarak, liman i┼č├žisi g├Âr├╝nt├╝leri genellikle VM g├Âr├╝nt├╝lerinden daha k├╝├ž├╝kt├╝r, derlenmesini, kopyalanmas─▒n─▒ ve payla┼č─▒lmas─▒n─▒ kolayla┼čt─▒r─▒r.

─░kincisi, Docker kapsay─▒c─▒lar─▒ birka├ž milisaniyede ba┼člayabilir, VM ise saniyeler i├žinde ba┼člayabilir.

2. Katmanl─▒ Dosya Sistemi

Bu Docker'─▒n ba┼čka bir ├Ânemli ├Âzelli─čidir. G├Âr├╝nt├╝lerin katmanlar─▒ vard─▒r ve farkl─▒ g├Âr├╝nt├╝ler katmanlar─▒ payla┼čabilir, daha fazla yer kazand─▒rabilir ve daha h─▒zl─▒ olu┼čturulabilir.

T├╝m kapsay─▒c─▒lar Ubuntu'yu temel g├Âr├╝nt├╝ler olarak kullan─▒yorsa, her g├Âr├╝nt├╝n├╝n kendine ait bir dosya sistemi yoktur, ancak ayn─▒ alt ├žizgi ubuntu dosyalar─▒n─▒ payla┼č─▒r ve yaln─▒zca kendi uygulama verilerinde farkl─▒l─▒k g├Âsterir.

3. Payla┼č─▒lan ─░┼čletim Sistemi ├çekirde─či

Kaplar─▒ s├╝re├ž olarak d├╝┼č├╝n├╝n!

Bir ana bilgisayarda ├žal─▒┼čan t├╝m kaplar, asl─▒nda farkl─▒ dosya sistemlerine sahip bir grup i┼člemdir. Ayn─▒ i┼čletim sistemi ├žekirde─čini payla┼č─▒rlar, yaln─▒zca sistem kitapl─▒─č─▒n─▒ ve ba─č─▒ml─▒l─▒klar─▒n─▒ kapsarlar.

Bu, ├žo─ču durumda iyidir (fazladan i┼čletim sistemi ├žekirde─či korunmaz), ancak kaplar aras─▒nda s─▒k─▒ izolasyon gerekti─činde sorun olabilir.

Neden ├Ânemli?

T├╝m bunlar devrim gibi de─čil, geli┼čmelere benziyor. De, nicel birikimi a├žar d├Ân├╝┼č├╝m├╝ nitel .

Uygulama da─č─▒t─▒m─▒ hakk─▒nda d├╝┼č├╝n├╝n. Yeni bir yaz─▒l─▒m (servis) da─č─▒tmak veya bir tane y├╝kseltmek istiyorsak, yeni bir VM olu┼čturmak yerine config dosyalar─▒n─▒ ve i┼člemlerini de─či┼čtirmek daha iyidir. ├ç├╝nk├╝ g├╝ncellenmi┼č hizmetle bir VM olu┼čturmak, onu test etmek (Dev & QA aras─▒nda payla┼č─▒n), ├╝retime da─č─▒tmak saatler, hatta g├╝nler s├╝r├╝yor. E─čer bir ┼čeyler ters giderse, daha fazla zaman harcayarak yeniden ba┼člaman─▒z gerekir. Bu nedenle, yeni bir yaz─▒l─▒m y├╝klemek i├žin yap─▒land─▒rma y├Ânetimi arac─▒n─▒ (kukla, tuz y─▒─č─▒n─▒, ┼čef vb.) Kullanmak, yeni dosyalar─▒ indirmek tercih edilir.

Liman i┼č├žisi s├Âz konusu oldu─čunda, eskisini de─či┼čtirmek i├žin yeni olu┼čturulan bir liman i┼č├žisi konteynerini kullanmak m├╝mk├╝n de─čildir. Bak─▒m ├žok daha kolay! Yeni bir g├Âr├╝nt├╝ olu┼čturmak, QA ile payla┼čmak, test etmek, da─č─▒tmak sadece dakikalar al─▒r (e─čer her ┼čey otomatikle┼čtirilmi┼čse), en k├Ât├╝ durumda saatlerce. Buna de─či┼čmez altyap─▒ denir : yaz─▒l─▒m─▒ s├╝rd├╝rmeyin (y├╝kseltme), bunun yerine yeni bir tane olu┼čturun.

Hizmetlerin nas─▒l sunuldu─čunu d├Ân├╝┼čt├╝r├╝r. Uygulamalar─▒ istiyoruz, ancak VM'leri s├╝rd├╝rmek zorunday─▒z (bu bir ac─▒d─▒r ve uygulamalar─▒m─▒zla ├žok az ilgisi vard─▒r). Docker, uygulamalara odaklanman─▒z─▒ sa─člar ve her ┼čeyi yumu┼čat─▒r.


31







Temelde kapsay─▒c─▒lar olan Docker, i┼čletim sistemi sanalla┼čt─▒rmas─▒n─▒ desteklemektedir; yani uygulaman─▒z , i┼čletim sisteminin tam bir ├Ârne─čine sahip oldu─čunu d├╝┼č├╝n├╝rken, VM donan─▒m sanalla┼čt─▒rmas─▒n─▒ destekler . Herhangi bir i┼čletim sistemini ├Âny├╝kleyebilece─činiz fiziksel bir makine gibi hissediyorsunuz.

Docker'da ├žal─▒┼čan kapsay─▒c─▒lar ana i┼čletim sistemi ├žekirde─čini payla┼č─▒rken, VM'lerde kendi i┼čletim sistemi dosyalar─▒ vard─▒r. Bir uygulama geli┼čtirdi─činiz ortam (OS), "test etme" veya "├╝retim" gibi ├že┼čitli hizmet ortamlar─▒na da─č─▒t─▒rken ayn─▒ olacakt─▒r.

├ľrne─čin, ba─člant─▒ noktas─▒ 4000'de ├žal─▒┼čan bir web sunucusu geli┼čtirirseniz, "test" ortam─▒n─▒za da─č─▒t─▒rken, bu ba─člant─▒ noktas─▒ ba┼čka bir program taraf─▒ndan zaten kullan─▒l─▒r, bu nedenle ├žal─▒┼čmay─▒ durdurur. Kaplarda katmanlar vard─▒r; ─░┼čletim Sisteminde yapt─▒─č─▒n─▒z t├╝m de─či┼čiklikler bir veya daha fazla katmana kaydedilir ve bu katmanlar g├Âr├╝nt├╝n├╝n bir par├žas─▒ olur, b├Âylece g├Âr├╝nt├╝n├╝n gitti─či her yerde ba─č─▒ml─▒l─▒klar da mevcut olur.

A┼ča─č─▒da g├Âsterilen ├Ârnekte, ana makine ├╝├ž VM'ye sahiptir. Sanal Makinelerdeki uygulamalar─▒n eksiksiz yal─▒t─▒m─▒ sa─člamak i├žin, her birinin kendi i┼čletim sistemi dosyalar─▒n─▒n, kitapl─▒klar─▒n─▒n ve uygulama kodunun kopyalar─▒ ile birlikte bir i┼čletim sisteminin tam bellek i├ži ├Ârne─či vard─▒r.
Konteynersiz

Oysa a┼ča─č─▒daki ┼čekil kaplarla ayn─▒ senaryoyu g├Âstermektedir. Burada, kapsay─▒c─▒lar basit├že ├žekirdek ve kitapl─▒klar dahil ana bilgisayar i┼čletim sistemini payla┼č─▒r; bu nedenle bir i┼čletim sistemi ba┼člatmalar─▒, kitapl─▒klar y├╝klemeleri ya da bu dosyalar i├žin ├Âzel bir bellek ├╝creti ├Âdemeleri gerekmez. Ald─▒klar─▒ tek art─▒ml─▒ alan, uygulaman─▒n kapta ├žal─▒┼čmas─▒ i├žin gerekli olan herhangi bir bellek ve disk alan─▒d─▒r. Uygulaman─▒n ortam─▒ ├Âzel bir i┼čletim sistemi gibi g├Âr├╝nmekle birlikte, uygulama da aynen ├Âzel bir ana bilgisayara uygulanacak ┼čekilde konu┼čland─▒r─▒l─▒r. Konteyn─▒rlanm─▒┼č uygulama saniyeler i├žinde ba┼člar ve uygulaman─▒n ├žok say─▒da ├Ârne─či VM kasas─▒na k─▒yasla makineye s─▒─čabilir.
g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin

Kaynak: https://azure.microsoft.com/en-us/blog/containers-docker-windows-and-trends/


25







Bir uygulamay─▒ ├žal─▒┼čt─▒rmak i├žin bir y─▒─č─▒n sa─člayan ├╝├ž farkl─▒ kurulum vard─▒r (Bu, bir kab─▒n ne oldu─čunu ve di─čer ├ž├Âz├╝mlerden ├žok daha g├╝├žl├╝ k─▒lan ne oldu─čunu anlamam─▒za yard─▒mc─▒ olacakt─▒r):

 1) Traditional Servers(bare metal)
2) Virtual machines (VMs)
3) Containers
 

1) Geleneksel sunucu y─▒─č─▒n─▒, bir i┼čletim sistemini ve uygulaman─▒z─▒ ├žal─▒┼čt─▒ran fiziksel bir sunucudan olu┼čur.

Avantajlar─▒:

  • Ham kaynaklar─▒n kullan─▒m─▒

  • ─░zolasyon

Dezavantajlar─▒:

  • ├çok yava┼č da─č─▒t─▒m s├╝resi
  • Pahal─▒
  • Harcanan kaynaklar
  • ├ľl├žeklemek zor
  • G├Â├ž etmesi zor
  • Karma┼č─▒k yap─▒land─▒rma

2) VM y─▒─č─▒n─▒ , bir i┼čletim sistemini ├žal─▒┼čt─▒ran bir fiziksel sunucudan ve sanal makinenizi, payla┼č─▒lan kaynaklar─▒n─▒z─▒ ve a─č arabiriminizi y├Âneten bir hiperviz├Ârden olu┼čur. Her Vm bir Konuk ─░┼čletim Sistemi, bir uygulama veya bir dizi uygulama ├žal─▒┼čt─▒r─▒r.

Avantajlar─▒:

  • Kaynaklar─▒n iyi kullan─▒m─▒
  • ├ľl├žeklemesi kolay
  • Yedeklemesi ve ta┼č─▒mas─▒ kolay
  • Maliyet verimlili─či
  • Esneklik

Dezavantajlar─▒:

  • Kaynak tahsisi sorunlu
  • Sat─▒c─▒ kilidi
  • Karma┼č─▒k yap─▒land─▒rma

3) Konteyner Kurulumu , di─čer y─▒─č─▒nlarla aras─▒ndaki temel fark, konteyner tabanl─▒ sanalla┼čt─▒rmad─▒r ve birden fazla izole edilmi┼č konuk ├Ârne─čini ele ge├žirmek i├žin ana bilgisayar i┼čletim sisteminin ├žekirde─čini kullan─▒r. Bu konuk ├Ârnekleri konteyner olarak adland─▒r─▒l─▒r. Ana bilgisayar, fiziksel bir sunucu veya VM olabilir.

Avantajlar─▒:

  • ─░zolasyon
  • Hafif
  • Kaynak etkili
  • Ta┼č─▒nmas─▒ kolay
  • G├╝venlik
  • D├╝┼č├╝k havai
  • Ayna ├╝retimi ve geli┼čtirme ortam─▒

Dezavantajlar─▒:

  • Ayn─▒ mimari
  • Kaynak yo─čun uygulamalar
  • A─č ve g├╝venlik sorunlar─▒.

Konteyner kurulumunu ├Âncekilerle kar┼č─▒la┼čt─▒rarak, konteynerle┼čmenin bug├╝ne kadar bildi─čimiz en h─▒zl─▒, en kaynak verimli ve en g├╝venli kurulum oldu─ču sonucuna varabiliriz. Kaplar, uygulaman─▒z─▒ ├žal─▒┼čt─▒ran yal─▒t─▒lm─▒┼č ├Ârneklerdir. Docker kab─▒ bir ┼čekilde d├Ând├╝r├╝r, katmanlar saniyeler i├žinde ├žal─▒┼čan varsay─▒lan depolama s├╝r├╝c├╝leri (Overlay s├╝r├╝c├╝leri) ve kab─▒n i├žine girdikten sonra, kab─▒n ├╝zerine i┼čledi─čimizde ├╝zerine olu┼čturulmu┼č ├╝zerine yaz ├╝zerine kopyala katman─▒ ile ├žal─▒┼čma zaman─▒ haf─▒zas─▒ al─▒r. konteynerler. VM'lerin olmas─▒ durumunda, sanalla┼čt─▒rma ortam─▒na her ┼čeyin y├╝klenmesi yakla┼č─▒k bir dakika s├╝recektir. Bu hafif ├Ârnekler kolayca de─či┼čtirilebilir, yeniden yap─▒land─▒r─▒labilir ve ta┼č─▒nabilir. Bu, ├╝retim ve geli┼čtirme ortam─▒n─▒ yans─▒tmam─▒za olanak tan─▒r ve CI / CD i┼člemlerinde ├žok yard─▒mc─▒d─▒r. Konteyn─▒rlar─▒n sa─člayabilece─či avantajlar kesinlikle burada kalmalar─▒ i├žin ├žok ├žekici.


21







─░le ilgili olarak:-

"Neden bir sabitleyici g├Âr├╝nt├╝ye yaz─▒l─▒m da─č─▒tmak, tutarl─▒ bir ├╝retim ortam─▒na yerle┼čtirmekten daha kolayd─▒r?"

├ço─ču yaz─▒l─▒m, a┼ča─č─▒dakilerden en az ├╝├žte biri olan bir├žok ortama da─č─▒t─▒l─▒r:

  1. Bireysel geli┼čtirici PC (ler)
  2. Payla┼č─▒lan geli┼čtirici ortam─▒
  3. Bireysel test cihaz─▒ PC (ler)
  4. Payla┼č─▒lan test ortam─▒
  5. KG ortam─▒
  6. UAT ortam─▒
  7. Y├╝k / performans testi
  8. Canl─▒ evreleme
  9. ├ťretim
  10. Ar┼čiv

Dikkate al─▒nmas─▒ gereken a┼ča─č─▒daki fakt├Ârler de var:

  • Geli┼čtiriciler ve ger├žekten de test uzmanlar─▒, i┼čin do─čas─▒ gere─či, tamamen veya ├žok farkl─▒ PC konfig├╝rasyonlar─▒na sahip olacaklar.
  • Geli┼čtiriciler, kurumsal veya i┼čletme standardizasyon kurallar─▒n─▒n (├Âr. Kendi makinelerinde geli┼čen serbest ├žal─▒┼čanlar (genellikle uzaktan) kontrol├╝ d─▒┼č─▒nda) PC'lerini geli┼čtirebilirler veya PC'lerini belirli bir ┼čekilde yap─▒land─▒rmak i├žin 'istihdam edilmemi┼č' veya 's├Âzle┼čmeli' olmayan a├ž─▒k kaynakl─▒ projelere katk─▒da bulunurlar. y├Ân)
  • Baz─▒ ortamlar, y├╝k dengeli bir yap─▒land─▒rmada sabit say─▒da ├žoklu makineden olu┼čacakt─▒r
  • Pek ├žok ├╝retim ortam─▒nda, trafik d├╝zeylerine ba─čl─▒ olarak dinamik bir ┼čekilde (veya 'elastik olarak') bulut tabanl─▒ sunucular olu┼čturulur ve yok edilir

G├Ârd├╝─č├╝n├╝z gibi, bir kurulu┼č i├žin tahmin edilen toplam sunucu say─▒s─▒ nadiren tek ┼čekillerde, ├žok s─▒k ├╝├žl├╝ ┼čekillerdedir ve yine de ├Ânemli ├Âl├ž├╝de daha y├╝ksek olabilir.

Bunlar─▒n hepsi, ilk etapta tutarl─▒ ortamlar yaratman─▒n, s─▒rf hacminden dolay─▒ (ye┼čil alan senaryosunda bile) yeterince zor oldu─ču anlam─▒na gelir; ancak , y├╝ksek say─▒da sunucu, yeni sunucular─▒n eklenmesi (dinamik olarak veya el ile), o / s sat─▒c─▒lar─▒ndan, antivir├╝s sat─▒c─▒lar─▒ndan, taray─▒c─▒ sat─▒c─▒lar─▒ndan ve benzerlerinden otomatik g├╝ncellemeler, geli┼čtiriciler veya sunucu teknisyenleri taraf─▒ndan yap─▒lan manuel yaz─▒l─▒m kurulumlar─▒ veya yap─▒land─▒rma de─či┼čiklikleri vb. Bunu tekrarlamama izin verin - bu neredeyse (punto ama├žl─▒ de─čil) imkans─▒z ortamlar─▒ tutarl─▒ tutmak i├žin (tamam, purist i├žin yap─▒labilir), ancak VM'lerin ve konteyn─▒rlar─▒n (├Ârne─čin Docker) ilk ba┼čta tam olarak tasarlanmas─▒n─▒n nedeni budur) b├╝y├╝k miktarda zaman, ├žaba ve disiplin gerektirir.

Bu nedenle sorunuzu daha ├žok ┼č├Âyle d├╝┼č├╝n├╝n "T├╝m ortamlar─▒ tutarl─▒ tutman─▒n a┼č─▒r─▒ zorlu─ču g├Âz ├Ân├╝ne al─▒nd─▒─č─▒nda, ├Â─črenme e─črisi hesaba kat─▒l─▒rken bile yaz─▒l─▒m─▒ bir docker imaj─▒na yerle┼čtirmek daha m─▒ kolay?" . Bence cevab─▒n her zaman "evet" olaca─č─▒n─▒ g├Âreceksiniz - ancak bu yeni soruyu Stack Overflow'a g├Ândermenin tek yolu var.


17







Farkl─▒l─▒klar hakk─▒nda daha detayl─▒ a├ž─▒klayan bir├žok cevap var, ancak i┼čte benim ├žok k─▒sa a├ž─▒klamam.

├ľnemli bir fark, VM'lerin i┼čletim sistemini ├žal─▒┼čt─▒rmak i├žin ayr─▒ bir ├žekirdek kullanmas─▒d─▒r . A─č─▒r olmas─▒n─▒n ve daha fazla sistem kayna─č─▒ t├╝keterek ├Âny├╝klemesi zaman almas─▒n─▒n nedeni budur.

Docker'da, kaplar ├žekirde─či ana bilgisayarla payla┼č─▒r ; bu nedenle hafif ve h─▒zl─▒ bir ┼čekilde ba┼člayabilir ve durdurabilirsiniz.

Sanalla┼čt─▒rmada, kaynaklar kurulumun ba┼č─▒nda tahsis edilir ve bu nedenle, sanal makine ├žo─ču zaman bo┼čtayken kaynaklar tam olarak kullan─▒lmaz. Docker'da, kaplara sabit miktarda donan─▒m kayna─č─▒ tahsis edilmemi┼čtir ve kaynaklar─▒ gereksinimlere ba─čl─▒ olarak kullanmakta serbesttir ve bu nedenle y├╝ksek oranda ├Âl├žeklendirilebilir.

Docker, UNION Dosya sistemini kullan─▒r. Docker, kapsay─▒c─▒lar taraf─▒ndan t├╝ketilen bellek alan─▒n─▒ azaltmak i├žin yazma ├╝zerine bir kopya teknolojisi kullan─▒r. Burada daha fazla oku


17







Bir ile sanal makine , biz o sunucu ├╝zerindeki bir ana i┼čletim sistemine sahip, bir sunucu var, sonra biz hypervisor'u var. Ve sonra o hiperviz├Âr├╝n ├╝st├╝nde ko┼čarken, bir uygulamayla ve ba─č─▒ml─▒ ikili dosyalar─▒yla ve o sunucudaki k├╝t├╝phanelerle herhangi bir say─▒da konuk i┼čletim sistemimiz var. Yan─▒nda b├╝t├╝n bir misafir i┼čletim sistemi getiriyor. Olduk├ža a─č─▒r. Ayr─▒ca, her bir fiziksel makineye ger├žekte ne kadar koyabilece─činiz konusunda bir s─▒n─▒r vard─▒r.


Resim tan─▒m─▒n─▒ buraya girin

├ľte yandan liman i┼č├žisi konteyn─▒rlar─▒ biraz farkl─▒d─▒r. Sunucumuz var. Ana bilgisayar i┼čletim sistemimiz var. Fakat bunun yerine bir hiperviz├Âr , Docker motorumuz var , bu durumda. Bu durumda, konuk i┼čletim sisteminin tamam─▒n─▒ yan─▒m─▒zda getirmiyoruz. ─░┼čletim sisteminin ├žok ince bir katman─▒n─▒ getiriyoruz ve buradaki ├žekirdek i┼člevselli─čine ula┼čmak i├žin kap, ana bilgisayar i┼čletim sistemi ile konu┼čabilir. Bu da ├žok hafif bir konteynere sahip olmam─▒z─▒ sa─člar.

─░├žinde bulunan tek ┼čey uygulama kodu ve ihtiya├ž duydu─ču her ikili dosya ve k├╝t├╝phaneler. Ve bu ikili dosyalar ve k├╝t├╝phaneler, onlar─▒n da olmas─▒n─▒ istiyorsan─▒z farkl─▒ kaplarda payla┼č─▒labilir. Ve bunun bize yapmam─▒z─▒ sa─člayan ┼čey, bir ├žok ┼čey. ├çok daha h─▒zl─▒ ba┼člang─▒├ž ÔÇőÔÇőzamanlar─▒ var . Bunun gibi birka├ž saniye i├žinde tek bir VM'yi kald─▒ramazs─▒n─▒z. Ve e┼čit olarak, onlar─▒ en k─▒sa s├╝rede a┼ča─č─▒ ├žekmek .. b├Âylece ├žok h─▒zl─▒ bir ┼čekilde a┼ča─č─▒ yukar─▒ ├Âl├žeklendirebiliriz ve daha sonra buna bakaca─č─▒z.


Resim tan─▒m─▒n─▒ buraya girin

Her kap, i┼čletim sisteminin kendi kopyas─▒yla ├žal─▒┼čt─▒─č─▒n─▒ d├╝┼č├╝n├╝yor. Bir t├╝r yalan─▒ olan kendi dosya sistemi, kendi kay─▒t defteri vb. Var. Asl─▒nda sanalla┼čt─▒r─▒l─▒yor.


14








VM'deki uygulamalar─▒n cpu ve konteynerleri nas─▒l kulland─▒─č─▒ aras─▒ndaki fark

Kaynak: Eylemdeki Kubernet'ler.


10







Docker'─▒ ├╝retim ortamlar─▒nda ve sahnelemeyi ├žok kulland─▒m. Buna al─▒┼č─▒nca ├žok konteynerli ve yal─▒t─▒lm─▒┼č ortamlar olu┼čturmak i├žin ├žok g├╝├žl├╝ bulacaks─▒n─▒z.

Docker, LXC'ye (Linux Container) dayal─▒ olarak geli┼čtirilmi┼čtir ve bir├žok Linux da─č─▒t─▒m─▒nda, ├Âzellikle Ubuntu'da m├╝kemmel ┼čekilde ├žal─▒┼čmaktad─▒r.

Liman konteynerleri yal─▒t─▒lm─▒┼č ortamlard─▒r. top Bir Docker g├Âr├╝nt├╝s├╝nden olu┼čturulmu┼č bir Docker kapsay─▒c─▒s─▒nda komutu verdi─činizde g├Ârebilirsiniz .

Bunun yan─▒ s─▒ra, dockerFile yap─▒land─▒rmas─▒ sayesinde ├žok hafif ve esnektir.

├ľrne─čin, bir Docker resmi olu┼čturabilir ve DockerFile'─▒ yap─▒land─▒rabilir ve ├Ârne─čin ├žal─▒┼čt─▒─č─▒ s─▒rada 'this', apt-get 'that' komutunu ├žal─▒┼čt─▒rarak, 'baz─▒ kabuk komut dosyas─▒n─▒' ├žal─▒┼čt─▒r─▒p ortam de─či┼čkenlerini ayarlamay─▒ vb.

Mikro-hizmet projeleri ve mimarisinde Docker ├žok uygun bir varl─▒kt─▒r. Docker, Docker s├╝r├╝s├╝, Kubernetes ve Docker Compose ile ├Âl├žeklenebilirlik, esneklik ve esneklik elde edebilirsiniz.

Docker ile ilgili bir di─čer ├Ânemli konu Docker Hub ve toplulu─ču. ├ľrne─čin, Prometheus, Grafana, Prometheus-JMX-Exporter ve Dokcer'i kullanarak kafka izlemek i├žin bir ekosistem uygulad─▒m.

Bunu yapmak i├žin, zookereper, kafka, Prometheus, Grafana ve jmx-collector i├žin yap─▒land─▒r─▒lm─▒┼č Docker kapsay─▒c─▒lar─▒n─▒ indirdim, daha sonra yml dosyalar─▒n─▒ kullanarak baz─▒lar─▒ i├žin kendi yap─▒land─▒rmam─▒ veya Docker kapsay─▒c─▒s─▒nda baz─▒ dosyalar─▒ ve yap─▒land─▒rmay─▒ de─či┼čtirdim ve bir b├╝t├╝n olu┼čturdum ├žok kapsay─▒c─▒l─▒ Docker'lar kullanarak kafka izlemeye y├Ânelik sistem, tek bir makinede izolasyon ve ├Âl├žeklenebilirlik ve bu mimarinin kolayca birden fazla sunucuya ta┼č─▒nabilmesi esnekli─či ile

Docker Hub sitesinin yan─▒ s─▒ra quay.io ad─▒nda ba┼čka bir site daha var. R─▒ht─▒m g├Âr├╝nt├╝lerini r─▒ht─▒m yapmak i├žin Docker Hub'dan bile i├že aktarabilir ve ard─▒ndan kendi r─▒ht─▒mda ├žal─▒┼čt─▒rma yapabilirsiniz.

Not: Docker'─▒ ilk ba┼čta ├Â─črenmek karma┼č─▒k ve zor g├Âr├╝n├╝yor, ancak buna al─▒┼č─▒nca o zaman onsuz ├žal─▒┼čamazs─▒n─▒z.

Yanl─▒┼č komutlar─▒ verdi─čimde veya konteynerlerimi ve t├╝m veri ve yap─▒land─▒rmalar─▒ yanl─▒┼čl─▒kla kald─▒rd─▒─č─▒mda Docker'la ├žal─▒┼čman─▒n ilk g├╝nlerini hat─▒rl─▒yorum.


9







Docker kendini b├Âyle tan─▒t─▒yor:

Docker, konteyner hareketini ve hibrit bulut ├╝zerindeki her uygulamaya hitap eden tek konteyner platformu sa─člay─▒c─▒s─▒ olan ┼čirkettir. G├╝n├╝m├╝z├╝n i┼čletmeleri dijital olarak d├Ân├╝┼č├╝m i├žin bask─▒ alt─▒ndad─▒r, ancak gittik├že artan ├že┼čitlilikteki bulutlar, veri merkezleri ve uygulama mimarileri portf├Ây├╝n├╝ rasyonelle┼čtirirken mevcut uygulamalar ve altyap─▒ taraf─▒ndan k─▒s─▒tlanmaktad─▒r. Docker, uygulamalar ve altyap─▒ ve geli┼čtiriciler aras─▒nda ger├žek ba─č─▒ms─▒zl─▒─č─▒ m├╝mk├╝n k─▒lar ve BT potansiyellerini ortaya ├ž─▒kar─▒r ve daha iyi i┼čbirli─či ve yenilik i├žin bir model olu┼čturur.

Dolay─▒s─▒yla Docker konteyner tabanl─▒d─▒r, yani mevcut makinenizde ├žal─▒┼čt─▒r─▒labilen g├Âr├╝nt├╝ler ve konteynerler vard─▒r. VM'ler gibi i┼čletim sistemini i├žermez , fakat Java, Tomcat, vb. Gibi farkl─▒ ├žal─▒┼čma paketleri paketi gibi.

E─čer konteyner anl─▒yorsan─▒z Docker ne olsun ve nas─▒l farkl─▒d─▒r VM s ...

Peki, konteyner nedir?

Bir kap resmi, ├žal─▒┼čt─▒rmak i├žin gereken her ┼čeyi i├žeren hafif, ba─č─▒ms─▒z ve ├žal─▒┼čt─▒r─▒labilir bir yaz─▒l─▒m paketidir: kod, ├žal─▒┼čma zaman─▒, sistem ara├žlar─▒, sistem kitapl─▒klar─▒, ayarlar. Hem Linux hem de Windows tabanl─▒ uygulamalar i├žin mevcut olan konteynerli yaz─▒l─▒m, ortamdan ba─č─▒ms─▒z olarak daima ayn─▒ ┼čekilde ├žal─▒┼čacakt─▒r. Konteynerler, yaz─▒l─▒mlar─▒ ├ževresinden izole eder, ├Ârne─čin geli┼čtirme ve evreleme ortamlar─▒ aras─▒ndaki farklar ve ayn─▒ altyap─▒ ├╝zerinde farkl─▒ yaz─▒l─▒mlar ├žal─▒┼čt─▒ran ekipler aras─▒ndaki ├žat─▒┼čmalar─▒ azaltmaya yard─▒mc─▒ olur.


Liman i┼č├žisi

A┼ča─č─▒daki resimde g├Ârd├╝─č├╝n├╝z gibi, her bir kab─▒n ayr─▒ bir paketi var ve makinenin i┼čletim sistemini kullanan tek bir makine payla┼č─▒m─▒nda ├žal─▒┼č─▒yor ... G├╝venli ve nakliyesi kolay ...


6







Docker'─▒n k├Âkeninin yan─▒ s─▒ra, VM'ler ve konteynerler aras─▒ndaki farklar─▒ a├ž─▒k├ža tart─▒┼čan ├žok say─▒da g├╝zel teknik cevap var.

Benim i├žin VM'ler ve Docker aras─▒ndaki temel fark, uygulaman─▒z─▒n tan─▒t─▒m─▒n─▒ nas─▒l y├Ânetti─činizdir.

VM'lerle uygulaman─▒z─▒ ve ba─č─▒ml─▒l─▒klar─▒n─▒ bir VM'den bir sonraki DEV'ye ve UAT'den PRD'ye y├╝kseltirsiniz.

  1. Genellikle bu sanal makinelerin farkl─▒ yamalar─▒ ve k├╝t├╝phaneleri olacakt─▒r.
  2. Bir VM'yi birden fazla uygulaman─▒n payla┼čmas─▒ nadir de─čildir. Bu, t├╝m uygulamalar i├žin yap─▒land─▒rma ve ba─č─▒ml─▒l─▒klar─▒n y├Ânetilmesini gerektirir.
  3. Yedekleme, Sanal Makinede geri alma de─či┼čikliklerini gerektirir. Veya m├╝mk├╝nse geri y├╝kleme.

Docker ile fikir, uygulaman─▒z─▒, ihtiya├ž duydu─ču k├╝t├╝phanelerle birlikte kendi konteynerinin i├žine yerle┼čtirmeniz ve ard─▒ndan t├╝m konteynerin tek bir birim olarak tan─▒t─▒lmas─▒d─▒r .

  1. ├çekirde─čin d─▒┼č─▒nda yamalar ve k├╝t├╝phaneler ayn─▒d─▒r.
  2. Genel bir kural olarak, konfig├╝rasyonu basitle┼čtiren konteyn─▒r ba┼č─▒na sadece bir uygulama vard─▒r.
  3. Yedekleme, kab─▒n durdurulmas─▒ ve silinmesinden olu┼čur.

Bu y├╝zden, VM'ler ile en temel seviyede, uygulamay─▒ ve ba─č─▒ml─▒l─▒klar─▒n─▒ ayr─▒ bile┼čenler olarak tan─▒t─▒rken, Docker ile her┼čeyi tek bir vuru┼čta tan─▒t─▒rs─▒n─▒z.

Ve evet, Kubernetes veya Docker Swarm gibi ara├žlar g├Ârevi b├╝y├╝k ├Âl├ž├╝de basitle┼čtirmesine ra─čmen bunlar─▒ y├Ânetmeyi de i├žeren kaplarla ilgili sorunlar var.


4


2018-05-25