Yal─▒t─▒lm─▒┼č bir ortam olu┼čturmak i├žin Vagrant veya Docker kullanmal─▒ m─▒y─▒m? [kapal─▒]


Al─▒nan cevaba git


Geli┼čtirme ve da─č─▒t─▒m i├žin Ubuntu kullan─▒yorum ve yal─▒t─▒lm─▒┼č bir ortam yaratma ihtiyac─▒m var.

Bu ama├ž i├žin Vagrant veya Docker'─▒ d├╝┼č├╝n├╝yorum. Art─▒lar─▒ ve eksileri nelerdir veya bu ├ž├Âz├╝mler nas─▒l kar┼č─▒la┼čt─▒r─▒l─▒r?


2041









Cevap say─▒s─▒n─▒ say: 10






Amac─▒n izolasyon ise bence istedi─čin Docker.

Vagrant sanal bir makine y├Âneticisidir. Sanal makine konfig├╝rasyonunun yan─▒ s─▒ra provizyonun kodlanmas─▒na izin verir. Ancak, yine de b├╝y├╝k bir y├╝ke sahip olan VirtualBox'a (veya ba┼čkalar─▒na) ba─čl─▒ olarak hala bir sanal makinedir . ├çok b├╝y├╝k bir sabit disk dosyas─▒na sahip olman─▒z─▒ gerektirir, ├žok fazla ram al─▒r ve performans ├žok iyi olmayabilir.

├ľte yandan Docker, ├žekirdek grubunu ve LXC ├╝zerinden ad alan─▒n─▒ kullan─▒r . Bu, ana bilgisayarla ayn─▒ ├žekirde─či ve ayn─▒ dosya sistemini kulland─▒─č─▒n─▒z anlam─▒na gelir. docker build Konteynerinizin provizyon ve konfig├╝rasyonunu yapmak i├žin Dockerfile komutunu kullanabilirsiniz . Dockerfile'unuzu nas─▒l yapaca─č─▒n─▒zla ilgili olarak docs.docker.com adresinde bir ├Ârne─činiz var ; ├žok sezgisel.

Vagrant'─▒ kullanmak isteyebilmenizin tek nedeni Ubuntu kutunuzda BSD, Windows veya Linux d─▒┼č─▒ bir geli┼čtirme yapman─▒z gerekiyor. Aksi takdirde, Docker'a gidin.


1132







Yasal Uyar─▒: Vagrant yazd─▒m! Fakat Vagrant'─▒ yazd─▒─č─▒m i├žin zaman─▒m─▒n ├žo─čunu Docker gibi bir yaz─▒l─▒m i├žeren DevOps d├╝nyas─▒nda ya┼čayarak ge├žiriyorum. Vagrant'─▒ kullanan pek ├žok ┼čirketle ├žal─▒┼č─▒yorum ve ├žo─ču Docker kullan─▒yor ve ikisinin nas─▒l etkile┼čime girdi─čini g├Âr├╝yorum.

├çok fazla konu┼čmadan ├Ânce, do─črudan bir cevap: ├ľzel senaryoda (yaln─▒z ba┼č─▒na ├žal─▒┼č─▒yorsun, Linux ├╝zerinde ├žal─▒┼č─▒yorsun, Docker'─▒ ├╝retimde kullan─▒yorsun), yaln─▒z Docker'a ba─čl─▒ kalabilir ve i┼čleri basitle┼čtirebilirsin. Di─čer bir├žok senaryoda (daha fazla tart─▒┼č─▒yorum), bu o kadar kolay de─čil.

Vagrant'─▒ Docker'la do─črudan kar┼č─▒la┼čt─▒rmak do─čru de─čil. Baz─▒ senaryolarda, ├╝st ├╝ste binerler ve b├╝y├╝k ├žo─čunlu─čunda, yapmazlar. Asl─▒nda, daha uygun bir kar┼č─▒la┼čt─▒rma Boot2Docker (Docker'─▒ ├žal─▒┼čt─▒rabilen minimum i┼čletim sistemi) gibi bir ┼čey kar┼č─▒s─▒nda Vagrant olacakt─▒r. Vagrant, soyutlamalar a├ž─▒s─▒ndan Docker'─▒n ├╝zerinde bir seviyedir, bu nedenle ├žo─ču durumda adil bir kar┼č─▒la┼čt─▒rma de─čildir.

Vagrant, geli┼čtirme amac─▒yla uygulamalar─▒ / hizmetleri ├žal─▒┼čt─▒rmak i├žin bir ┼čeyler ba┼člatt─▒. Bu VirtualBox, VMware'de olabilir. AWS, OpenStack gibi uzak olabilir. Bunlar─▒n i├žinde, e─čer kaplar kullan─▒yorsan─▒z, Vagrant umursamaz ve ┼čunlar─▒ benimser: ├Ârne─čin Docker kaplar─▒n─▒ otomatik olarak kurabilir, a┼ča─č─▒ ├žekebilir, in┼ča edebilir ve ├žal─▒┼čt─▒rabilir. Vagrant 1.6 ile Vagrant, liman tabanl─▒ geli┼čtirme ortamlar─▒na sahiptir ve Docker'─▒n Linux, Mac ve Windows'ta Vagrant ile ayn─▒ i┼č ak─▒┼č─▒na sahip kullan─▒m─▒n─▒ desteklemektedir. Vagrant burada Docker'─▒ de─či┼čtirmeyi denemez, Docker uygulamalar─▒n─▒ benimser.

Docker, ├Âzellikle Docker kapsay─▒c─▒lar─▒n─▒ ├žal─▒┼čt─▒r─▒r. Do─črudan Vagrant ile kar┼č─▒la┼čt─▒r─▒yorsan─▒z: ├Âzellikle daha spesifik (yaln─▒zca Docker konteynerlerini ├žal─▒┼čt─▒rabilir), daha az esnek (bir yerde Linux veya Linux ana bilgisayar─▒ gerektirir) ├ž├Âz├╝m├╝. Tabi e─čer ├╝retimden ya da CI'den bahsediyorsan Vagrant ile k─▒yaslanamaz! Vagrant bu ortamlarda ya┼čamaz ve Docker kullan─▒lmal─▒d─▒r.

Kurulu┼čunuz t├╝m projeleri i├žin yaln─▒zca Docker konteynerleri kullan─▒yorsa ve yaln─▒zca Linux'ta ├žal─▒┼čan geli┼čtiricileri varsa, tamam, Docker kesinlikle sizin i├žin ├žal─▒┼čabilir!

Aksi halde, DograÔÇÖy─▒ tek ba┼č─▒na kullanmaya ├žal─▒┼čmaktan fayda g├Âremiyorum, ├ž├╝nk├╝ VagrantÔÇÖ─▒n sundu─ču ┼čeylerin ├žo─čunu kaybedersiniz, ki bunlar ger├žek i┼č / verimlilik avantajlar─▒na sahiptir:

  • Vagrant, VirtualBox, VMware, AWS, OpenStack, vb. Makineleri ba┼člatabilir. Ne istedi─čin ├Ânemli de─čil, Vagrant onu ba┼člatabilir. Docker kullan─▒yorsan─▒z, Vagrant bunlardan herhangi birine Docker'─▒ y├╝kleyebilir, b├Âylece bunlar─▒ bu ama├ž i├žin kullanabilirsiniz.

  • Vagrant, t├╝m projeleriniz i├žin tek bir i┼č ak─▒┼č─▒d─▒r. Ya da ba┼čka bir deyi┼čle, insanlar─▒n bir projeyi Docker konteynerinde olup olmad─▒─č─▒na bakmay─▒ ├Â─črenmesi gereken tek ┼čey budur. ├ľrne─čin gelecekte, bir rakip do─črudan Docker'la rekabet etmek i├žin ortaya ├ž─▒karsa, Vagrant da bunu y├Ânetebilecek.

  • Vagrant Windows (XP'ye geri d├Ân), Mac (10.5'e geri d├Ân) ve Linux (├žekirde─če 2.6 geri d├Ân) ├╝zerinde ├žal─▒┼č─▒yor. Her ├╝├ž durumda da i┼č ak─▒┼č─▒ ayn─▒d─▒r. Docker kullan─▒yorsan─▒z Vagrant, Docker'─▒ bu sistemlerin ├╝├ž├╝nde de ├žal─▒┼čt─▒rabilecek bir makine (VM veya uzak) ba┼člatabilir.

  • Vagrant, a─č olu┼čturma ve klas├Ârleri senkronize etme gibi baz─▒ geli┼čmi┼č veya ├Ânemsiz ┼čeyleri nas─▒l yap─▒land─▒raca─č─▒n─▒ bilir. ├ľrne─čin: Vagrant, bir makineye veya iletme ba─člant─▒ noktalar─▒na statik bir IP'nin nas─▒l ba─članaca─č─▒n─▒ bilir ve yap─▒land─▒rma, hangi sistemi kullan─▒rsan─▒z kullan─▒n (VirtualBox, VMware, vb.) Ayn─▒d─▒r. uzak makineye dosya (VirtualBox payla┼č─▒lan klas├Ârler, NFS, rsync, Samba [eklenti], vb.). Docker kullan─▒yorsan─▒z, Vagrant's─▒z bir VM'li Docker bile, bunu manuel olarak yapmak zorunda kal─▒rs─▒n─▒z ya da bu durumda Vagrant'─▒ yeniden icat etmek zorunda kal─▒rlard─▒.

  • Vagrant 1.6, liman i┼č├žisi geli┼čtirme ortamlar─▒ i├žin birinci s─▒n─▒f deste─če sahiptir . Bu Linux'ta sanal bir makine ba┼člatmayacak ve otomatik olarak Mac ve Windows'ta sanal bir makine ba┼člatacak. Sonu├žta Docker ile ├žal─▒┼čman─▒n t├╝m platformlarda ayn─▒ olmas─▒ ve Vagrant a─č olu┼čturma, senkronize edilmi┼č klas├Ârler vb.

Vagrant yerine Docker'─▒ kullanman─▒n lehine duydu─čum belirli saya├ž arg├╝manlar─▒n─▒ ele almak i├žin:

  • "Daha az hareketli par├ža" - Evet, her proje i├žin m├╝nhas─▒r Docker kullan─▒yorsan─▒z olabilir. O zaman bile, Docker'─▒n kilitlenmesi i├žin esneklikten ├Âd├╝n veriyor. Docker'─▒ herhangi bir proje, ge├žmi┼č, ┼čimdi veya gelecek i├žin kullanmamaya karar verirseniz, daha fazla hareketli par├žaya sahip olacaks─▒n─▒z. Vagrant'─▒ kullanm─▒┼č olsayd─▒n, kalan─▒n─▒ destekleyen hareketli bir par├žaya sahip olursun.

  • "Bu daha h─▒zl─▒!" - Linux kapsay─▒c─▒lar─▒n─▒ ├žal─▒┼čt─▒rabilecek ana makineye sahip oldu─čunuzda, Docker bir kapsay─▒c─▒y─▒ ├žal─▒┼čt─▒r─▒rken herhangi bir sanal makinenin ba┼člatt─▒─č─▒ndan ├žok daha h─▒zl─▒d─▒r. Ancak sanal bir makine (veya uzak makine) ba┼člatmak bir kerelik maliyettir. G├╝n boyunca, ├žo─ču Vagrant kullan─▒c─▒s─▒ sanal makinelerini asla tahrip etmiyor. Geli┼čtirme ortamlar─▒ i├žin garip bir optimizasyon. Docker'─▒n ger├žekten parlad─▒─č─▒ ├╝retimde, kaplar─▒ h─▒zla yukar─▒ / a┼ča─č─▒ d├Ând├╝rme ihtiyac─▒n─▒ anl─▒yorum.

Umar─▒m Docker'─▒ Vagrant'la kar┼č─▒la┼čt─▒rman─▒n ├žok zor oldu─čunu ve do─čru olmad─▒─č─▒n─▒ d├╝┼č├╝n├╝yorum. Dev ortamlar i├žin Vagrant daha soyut, daha geneldir. Docker (ve Vagrant gibi davranabilmenin ├že┼čitli yollar─▒) Vagrant'─▒n sundu─ču her ┼čeyi g├Âz ard─▒ ederek Vagrant'─▒n belirli bir kullan─▒m durumudur.

Sonu├ž olarak: son derece spesifik kullan─▒m durumlar─▒nda, Docker kesinlikle Vagrant'─▒n yerine ge├žecek. ├ço─ču durumda, ├Âyle de─čil. Vagrant Docker kullan─▒m─▒n─▒z─▒ engellemez; Asl─▒nda bu deneyimi daha p├╝r├╝zs├╝z hale getirmek i├žin elinden geleni yap─▒yor. Bunun do─čru olmad─▒─č─▒n─▒ g├Âr├╝rseniz, Vagrant'─▒n amac─▒ herhangi bir sistemle e┼čit derecede iyi ├žal─▒┼čmakt─▒r, ├ž├╝nk├╝ i┼čleri geli┼čtirmek i├žin ├Ânerilerde bulunmaktan memnuniyet duyar─▒m.

Umar─▒m bu i┼čleri temizler!


2304







Ben Docker'─▒n yazar─▒y─▒m.

K─▒sa cevap, makineleri y├Ânetmek istiyorsan─▒z Vagrant kullanman─▒z gerekti─čidir. Uygulama ortamlar─▒ olu┼čturmak ve ├žal─▒┼čt─▒rmak istiyorsan─▒z Docker'─▒ kullanmal─▒s─▒n─▒z.

Vagrant, sanal makineleri y├Ânetmek i├žin bir ara├žt─▒r. Docker, uygulamalar─▒ hafif kaplara paketleyerek uygulamalar─▒ olu┼čturmak ve da─č─▒tmak i├žin bir ara├žt─▒r. Bir kapsay─▒c─▒ hemen hemen her yaz─▒l─▒m bile┼čenini ba─č─▒ml─▒l─▒klar─▒yla birlikte (├žal─▒┼čt─▒r─▒labilir dosyalar, k├╝t├╝phaneler, yap─▒land─▒rma dosyalar─▒ vb.) Tutabilir ve bunu garantili ve tekrarlanabilir bir ├žal─▒┼čma zaman─▒ ortam─▒nda ├žal─▒┼čt─▒rabilir. Bu, uygulaman─▒z─▒ bir kez olu┼čturmay─▒ ve herhangi bir yere da─č─▒tmay─▒ ├žok kolayla┼čt─▒r─▒r - test i├žin diz├╝st├╝ bilgisayar─▒n─▒zda, ard─▒ndan canl─▒ da─č─▒t─▒m i├žin farkl─▒ sunucularda vb.

Docker'─▒ yaln─▒zca Linux'ta kullanabilece─činiz yayg─▒n bir yan─▒lg─▒d─▒r. Bu yanl─▒┼č; Docker'─▒ Mac ve Windows'a da y├╝kleyebilirsiniz. Mac'e y├╝klendi─činde Docker, konteyneriniz i├žin sarmalay─▒c─▒ g├Ârevi g├Âren k├╝├ž├╝k bir Linux VM'sini (diskte 25 MB!) Bir araya getirir. Kurulduktan sonra bu tamamen ┼čeffaft─▒r; Docker komut sat─▒r─▒n─▒ tamamen ayn─▒ ┼čekilde kullanabilirsiniz. Bu size her iki d├╝nyan─▒n da en iyisini sunar: uygulaman─▒z─▒ ├žok hafif, test etmesi kolay ve hareket etmesi kolay olan kaplar kullanarak test edebilir ve geli┼čtirebilirsiniz (├Ârne─čin, yeniden kullan─▒labilir kaplar─▒ payla┼čmak i├žin https://hub.docker.com adresini ziyaret edin) . Docker toplulu─ču) ve sanal makinelerin y├Ânetilmesinin nitrit-kumlu ayr─▒nt─▒lar─▒ hakk─▒nda endi┼čelenmenize gerek yok; bu, yine de bir ama├ž i├žin bir yoldur.

Teoride, Vagrant'─▒ Docker i├žin bir soyutlama katman─▒ olarak kullanmak m├╝mk├╝nd├╝r. Buna kar┼č─▒ iki sebepten dolay─▒ ├Âneriyorum:

  • ─░lk olarak, Vagrant Docker i├žin iyi bir soyutlama de─čil. Vagrant sanal makineleri y├Ânetmek i├žin tasarland─▒. Docker, bir uygulama ├žal─▒┼čma zaman─▒n─▒ y├Ânetmek i├žin tasarlanm─▒┼čt─▒r. Bu, Docker'─▒n tasar─▒m gere─či bir uygulamayla daha zengin ┼čekillerde etkile┼čime girebilece─či ve uygulama ├žal─▒┼čma zaman─▒ hakk─▒nda daha fazla bilgiye sahip olaca─č─▒ anlam─▒na gelir. Docker'daki ilkeler, i┼člemler, g├╝nl├╝k ak─▒┼člar─▒, ortam de─či┼čkenleri ve bile┼čenler aras─▒ndaki a─č ba─člant─▒lar─▒d─▒r. Vagrant'taki ilkel makineler makineler, blok ayg─▒tlar─▒ ve ssh anahtarlar─▒d─▒r. Serseri basit├že y─▒─č─▒n─▒n alt─▒nda durur ve bir konteyn─▒rla etkile┼čime girmesinin tek yolu, ba┼čka bir t├╝r makine gibi davranarak "├Âny├╝kleme" yap─▒p "giri┼č yapabilece─čini" yapmakt─▒r. Yani, Docker eklentisi ile "sersem" yazabilirsiniz ve g├╝zel bir ┼čey olacak. Docker'─▒n yapabildiklerinin geni┼čli─činin bir alternatifi mi? Yerli Docker'─▒ birka├ž g├╝nl├╝─č├╝ne deneyin ve kendiniz g├Âr├╝n :)

  • ─░kincisi, kilitlenme arg├╝man─▒. "Vagrant'─▒ bir soyutlama olarak kullan─▒rsan─▒z, Docker'a kilitlenmeyeceksiniz!". Makineleri y├Ânetmek i├žin tasarlanan Vagrant'─▒n bak─▒┼č a├ž─▒s─▒na g├Âre bu m├╝kemmel bir anlam ifade ediyor: kaplar ba┼čka t├╝r bir makine de─čil mi? Amazon EC2 ve VMware gibi, sa─člama ara├žlar─▒m─▒z─▒ da belirli bir sat─▒c─▒ya ba─člamamaya dikkat etmeliyiz! Bu kilitlenmeye neden olur - Vagrant ile hepsini soyutlamak daha iyidir. Bunun d─▒┼č─▒nda Docker'─▒n amac─▒n─▒ tamamen ka├ž─▒r─▒yor. Docker makineleri tedarik etmiyor; Uygulaman─▒z─▒, herhangi bir yere b─▒rak─▒labilen hafif, ta┼č─▒nabilir bir ├žal─▒┼čma s├╝resine sarar.

Uygulaman─▒z i├žin se├žti─činiz ├žal─▒┼čma zaman─▒n─▒n, makinelerinizi nas─▒l haz─▒rlad─▒─č─▒n─▒zla ilgisi yok! ├ľrne─čin, ba┼čkalar─▒ taraf─▒ndan sa─članan makinelere (├Ârne─čin, sistem y├Âneticiniz taraf─▒ndan da─č─▒t─▒lm─▒┼č bir EC2 ├Ârne─či, belki de Vagrant kullanarak) makinelere da─č─▒tmak veya Vagrant'─▒n sa─člayamad─▒─č─▒ metal makineleri ├ž─▒plak hale getirmek olduk├ža yayg─▒nd─▒r. Tersine, Vagrant'─▒, uygulaman─▒z─▒ geli┼čtirmeyle ilgisi olmayan makineler (├Ârne─čin, kullan─▒ma haz─▒r bir Windows IIS kutusu veya ba┼čka bir ┼čey) sa─člamak i├žin kullanabilirsiniz. Veya Dogra'y─▒ kullanmayan projelere makine tedarik etmek i├žin Vagrant'─▒ kullanabilirsiniz - ├Ârne─čin ba─č─▒ml─▒l─▒k y├Ânetimi ve kum havuzu i├žin belki yakut ve rvm kombinasyonlar─▒n─▒ kullan─▒rlar.

├ľzetle: Vagrant makineleri y├Ânetmek i├žindir ve Docker uygulama ortamlar─▒n─▒ olu┼čturmak ve ├žal─▒┼čt─▒rmak i├žindir.


1391







Docker'la ilgili hi├žbir deneyimim olmad─▒─č─▒n─▒ kabul ederek, ├žok fazla ├žeki┼č sa─člayan ger├žekten temiz bir ├ž├Âz├╝m gibi g├Âr├╝nen hevesli bir g├Âzlemci olarak cevab─▒mdan ├Ânce ├ž─▒kar─▒m.

Vagrant ile iyi bir deneyimim var ve kesinlikle tavsiye ederim. Kesinlikle LXC tabanl─▒ yerine VM tabanl─▒ olmas─▒ a├ž─▒s─▒ndan daha a─č─▒r bir ├ž├Âz├╝m. Ancak, iyi bir diz├╝st├╝ bilgisayar (8 GB RAM, i5 / i7 CPU), geli┼čtirme ara├žlar─▒n─▒n yan─▒ s─▒ra Vagrant / VirtualBox kullanarak VM ├žal─▒┼čt─▒rmada hi├ž sorun ya┼čamad─▒m.

Vagrant'─▒n en g├╝zel yanlar─▒ndan biri, konfig├╝rasyonun otomatikle┼čtirilmesi i├žin Kukla / A┼č├ž─▒ / Kabuk Beti─či ile entegrasyondur . ├ťretim ortam─▒n─▒z─▒ yap─▒land─▒rmak i├žin bu se├ženeklerden birini kullan─▒yorsan─▒z, alaca─č─▒n─▒z ile ayn─▒ olan bir geli┼čtirme ortam─▒ olu┼čturabilirsiniz ve bu tam olarak istedi─činiz ┼čeydir.

Vagrant'taki di─čer harika ┼čey, Vagrantfile'nizi uygulama kodunuzla birlikte versiyonlayabilmenizdir. Bu, ekibinizdeki herkesin bu dosyay─▒ payla┼čabilece─či anlam─▒na gelir ve herkesin ayn─▒ ortam yap─▒land─▒rmas─▒yla ├žal─▒┼čt─▒─č─▒n─▒ garanti edersiniz.

─░lgin├ž bir ┼čekilde, Vagrant ve Docker asl─▒nda ├╝cretsiz olabilir. Vagrant, farkl─▒ sanalla┼čt─▒rma sa─člay─▒c─▒lar─▒n─▒ desteklemek i├žin geni┼čletilebilir ve Docker'─▒n yak─▒n gelecekte destek alabilecek bir sa─člay─▒c─▒ olmas─▒ m├╝mk├╝n olabilir. Konuyla ilgili son tart─▒┼čma i├žin https://github.com/dotcloud/docker/issues/404 adresine bak─▒n .


83







Çok fazla tamamlayıcılar.

Birka├ž ay boyunca t├╝m projelerim i├žin VirtualBox, Vagrant ve Docker kombinasyonunu kullan─▒yorum ve a┼ča─č─▒daki avantajlar─▒ ┼čiddetle hissettim.

Vagrant'ta herhangi bir Chef solo provizyonu ile tamamen yapabilecekleriniz ve serseri dosyan─▒z i├žin tek yapman─▒z gereken, docker'─▒ y├╝kleyen tek bir k├╝├ž├╝k kabuk beti─či ├žal─▒┼čt─▒ran bir makine haz─▒rlamak. Bu, her proje i├žin Vagrant dosyalar─▒m─▒n neredeyse ayn─▒ ve ├žok basit oldu─ču anlam─▒na geliyor.

─░┼čte tipik bir Vagrantfile

 # -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "mark2"
  config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"
  [3000, 5000, 2345, 15672, 5672, 15674, 27017, 28017, 9200, 9300, 11211, 55674, 61614, 55672, 5671, 61613].each do |p|
    config.vm.network :forwarded_port, guest: p, host: p
  end
  config.vm.network :private_network, ip: "192.168.56.20"
  config.vm.synced_folder ".", "/vagrant", :type => "nfs"
  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--memory", "2048"]
    vb.customize ["modifyvm", :id, "--cpus", "2"]
  end
  # Bootstrap to Docker
  config.vm.provision :shell, path: "script/vagrant/bootstrap", :privileged => true
  # Build docker containers
  config.vm.provision :shell, path: "script/vagrant/docker_build", :privileged => true
  # Start containers
  # config.vm.provision :shell, path: "script/vagrant/docker_start", :privileged => true
end
 

Liman i┼č├žisi y├╝kleyen Bootstrap dosyas─▒ ┼č├Âyle g├Âr├╝n├╝r

 #!/usr/bin/env bash
echo 'vagrant  ALL= (ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers
apt-get update -y
apt-get install htop -y
apt-get install linux-image-extra-`uname -r` -y
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
echo deb http://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list
apt-get update -y
apt-get install lxc-docker -y
apt-get install curl -y
 

┼×imdi ├žal─▒┼čt─▒rmam gereken t├╝m hizmetleri alabilmem i├žin buna benzeyen bir docker_start beti─čim var

 #!/bin/bash
cd /vagrant
echo Starting required service containers
export HOST_NAME=192.168.56.20
# Start MongoDB
docker run --name=mongodb --detach=true --publish=27017:27017 --publish=28017:28017 dockerfile/mongodb
read -t5 -n1 -r -p "Waiting for mongodb to start..." key
# Start rabbitmq
docker run --name=rabbitmq --detach=true --publish=5671:5671 --publish=5672:5672 --publish=55672:55672 --publish=15672:15672 --publish=15674:15674 --publish=61613:61613 --env RABBITMQ_USER=guest --env RABBITMQ_PASS=guest rabbitmq
read -t5 -n1 -r -p "Waiting for rabbitmq to start..." key
# Start cache
docker run --name=memcached --detach=true --publish=11211:11211  ehazlett/memcached
read -t5 -n1 -r -p "Waiting for cache to start..." key
# Start elasticsearch
docker run --name=elasticsearch --detach=true --publish=9200:9200 --publish=9300:9300 dockerfile/elasticsearch
read -t5 -n1 -r -p "Waiting for elasticsearch to start..." key
echo "All services started"
 

Bu ├Ârnekte MongoDB, Elastisearch, RabbitMQ ve Memcached kullan─▒yorum

Liman i┼č├žisi olmayan bir Chef solo konfig├╝rasyonu olduk├ža daha karma┼č─▒k olurdu.

├ťretim ortam─▒na ge├žti─činizde son bir b├╝y├╝k art─▒ kazan─▒l─▒r, geli┼čtirme ortam─▒n─▒ liman i┼č├žisi ├žal─▒┼čt─▒rmak i├žin yeterli yap─▒land─▒rmaya sahip olduklar─▒ i├žin ayn─▒ olan bir ana bilgisayar altyap─▒s─▒na d├Ân├╝┼čt├╝r├╝rs├╝n├╝z.

E─čer ilgileniyorsan─▒z, web sitemdeki geli┼čtirme ortam─▒ hakk─▒nda daha ayr─▒nt─▒l─▒ bir makalem var.

Bir Vagrant / Docker Geli┼čtirme Ortam─▒ Uygulama


59







Vagrant-lxc , Vagrant'─▒ sa─člamak i├žin LXC kullanman─▒za izin veren bir eklentidir. Varsay─▒lan serseri VM'nin (VirtualBox) sahip oldu─ču t├╝m ├Âzelliklere sahip de─čildir, ancak size liman i┼č├žisi konteynerlerinden daha fazla esneklik sunmal─▒d─▒r. Ba─člant─▒da izlemeye de─čer yeteneklerini g├Âsteren bir video var.


53







Vagrant ile ┼čimdi bir sa─člay─▒c─▒ olarak Docker'a sahip olabilirsiniz. http://docs.vagrantup.com/v2/docker/ . Docker sa─člay─▒c─▒, VirtualBox veya VMware yerine kullan─▒labilir.

L├╝tfen Vagrant ile provizyon yapmak i├žin Docker'─▒ kullanabilece─činizi unutmay─▒n. Bu, Docker'─▒ sa─člay─▒c─▒ olarak kullanmaktan ├žok farkl─▒. http://docs.vagrantup.com/v2/provisioning/docker.html

Bu, Chef veya Puppet'i Docker ile de─či┼čtirebilece─činiz anlam─▒na gelir . Sa─člay─▒c─▒ olarak Docker (VM) sa─člay─▒c─▒ olarak Chef'i sa─člay─▒c─▒ olarak kullanabilirsiniz. Veya sa─člay─▒c─▒ olarak VirtualBox'─▒ ve sa─člay─▒c─▒ olarak Docker'─▒ kullanabilirsiniz.


45







Her ikisinin de kullan─▒lmas─▒ uygulama teslim testinin ├Ânemli bir par├žas─▒d─▒r. Docker ile ├žal─▒┼čmaya yeni ba┼člad─▒m ve yaz─▒l─▒m─▒n─▒ olu┼čturma ve sa─člamada olduk├ža karma┼č─▒k olan bir uygulama ekibi hakk─▒nda ├žok fazla d├╝┼č├╝n├╝yorum. Klasik bir Phoenix Projesi / S├╝rekli Teslimat durumu d├╝┼č├╝n├╝n.

D├╝┼č├╝nce b├Âyle bir ┼čey gider:

  • Bir Java / Go uygulama bile┼čenini al─▒n ve bunu bir kap olarak olu┼čturun (notun, uygulaman─▒n kapta m─▒ yoksa daha sonra da kaba m─▒ y├╝klenece─čine emin de─čil)
  • Konteyneri bir Vagrant VM'ye g├Ânderin.
  • T├╝m uygulama bile┼čenleri i├žin bunu tekrarlay─▒n.
  • Kodlanacak bile┼čen (ler) i yineleyin.
  • Teslimat mekanizmas─▒n─▒ Vagrant taraf─▒ndan y├Ânetilen VM (ler) ├╝zerinde s├╝rekli olarak test edin
  • Konteyneri yerle┼čtirmenin ne zaman geldi─čini bilerek uyuyun, entegrasyon testlerinin Docker'dan ├Âncekinden ├žok daha fazla s├╝rd├╝─č├╝n├╝ ├Â─črenin.

Bu, Mitchell'in Vagrant'─▒n S├╝rekli Teslimatta d├╝┼č├╝nen Farley / Humbles ile birlikte geli┼čtirme i├žin oldu─ču ┼čeklindeki mant─▒─č─▒n─▒n bir uzant─▒s─▒ gibi g├Âr├╝n├╝yor. E─čer bir geli┼čtirici olarak, entegrasyon testi ve uygulama teslimi konusunda geri bildirim d├Âng├╝s├╝n├╝ k├╝├ž├╝ltebilirsem, daha kaliteli ve daha iyi ├žal─▒┼čma ortamlar─▒ izleyecektir.

Bir geli┼čtirici olarak s├╝rekli olarak ve s├╝rekli olarak VM'ye konteynerler teslim etmem ve uygulamay─▒ daha b├╝t├╝nsel olarak test etmem, ├╝retim b├╝ltenlerinin daha da basitle┼čtirilece─či anlam─▒na geliyor.

Bu y├╝zden Vagrant'─▒n Docker'─▒n uygulama da─č─▒t─▒m─▒ i├žin elde edece─či harika sonu├žlardan baz─▒lar─▒n─▒ kald─▒rarak kullanman─▒n bir yolu olarak geli┼čti─čini g├Âr├╝yorum.


15







Kesinlikle kazanmak i├žin Docker!

Bildi─činiz gibi Vagrant sanal makine y├Ânetimi i├žindir, oysa Docker yaz─▒l─▒m konteyn─▒rlar─▒ y├Ânetimi i├žindir. Fark─▒n fark─▒nda de─čilseniz, i┼čte: Bir yaz─▒l─▒m kab─▒ ayn─▒ makineyi ve ├žekirde─či di─čer yaz─▒l─▒m kablar─▒ ile payla┼čabilir. Kaplar─▒ kullanmak paradan tasarruf etmenizi sa─člar, ├ž├╝nk├╝ birden fazla i┼čletim sistemi (├žekirdek) i├žin kaynaklar─▒ bo┼ča harcamazs─▒n─▒z, sunucular─▒n her birini daha iyi bir izolasyon derecesiyle koruyabilirsiniz.

Tabii ki kendi tuzaklar─▒ ve zorluklar─▒ ile ilgilenmek i├žin yeni bir disiplin.

Gereksinimleriniz tek makine kaynaklar─▒ s─▒n─▒r─▒n─▒ a┼č─▒yorsa Docker Swarm'a gidin.


9







As─▒l Oracle Java dergisinde Docker'─▒n Vagrant (ve Kukla) ile birlikte kullan─▒m─▒ hakk─▒nda ger├žekten bilgilendirici bir makale var:

Sonu├ž

Docker'─▒n hafif kaplar─▒ klasik VM'lere k─▒yasla daha h─▒zl─▒d─▒r ve geli┼čtiriciler aras─▒nda ve CD ve DevOps giri┼čimlerinin bir par├žas─▒ olarak pop├╝ler hale gelmi┼čtir. Amac─▒n─▒z izolasyon ise, Docker m├╝kemmel bir se├žimdir. Vagrant, ayr─▒ ayr─▒ VM'lerin yap─▒land─▒rmalar─▒n─▒ kodlaman─▒n yan─▒ s─▒ra sa─člama i┼člemlerini yapman─▒za olanak sa─člayan bir VM y├Âneticisidir. Bununla birlikte, nispeten b├╝y├╝k ek y├╝k├╝ olan VirtualBox'a (ya da ba┼čka bir VM y├Âneticisine) ba─čl─▒ bir VM'dir. ├çok b├╝y├╝k bir sabit disk s├╝r├╝c├╝s├╝ne sahip olman─▒z─▒ gerektirir, ├žok fazla RAM gerektirir ve performans yetersiz olabilir. Docker, ├žekirdek gruplar─▒ ve ad alan─▒ yal─▒t─▒m─▒ kullanarak LXC'yi kullan─▒r. Bu, ev sahibi ile ayn─▒ ├žekirde─či ve ayn─▒ ile sistemini kulland─▒─č─▒n─▒z anlam─▒na gelir. Vagrant, soyutlama a├ž─▒s─▒ndan Docker'─▒n ├╝st├╝ndeki bir seviyedir, bu y├╝zden ger├žekten kar┼č─▒la┼čt─▒r─▒lamazlar. Kukla gibi konfig├╝rasyon y├Ânetimi ara├žlar─▒, hedef ortamlar─▒n sa─članmas─▒nda yayg─▒n olarak kullan─▒lmaktad─▒r. Mevcut Kukla tabanl─▒ ├ž├Âz├╝mleri yeniden kullanmak Docker ile kolayd─▒r. ├ç├Âz├╝m├╝n├╝z├╝ de dilimleyebilirsiniz, b├Âylece altyap─▒ Kukla ile sa─član─▒r; ara katman yaz─▒l─▒m─▒, i┼č uygulamas─▒n─▒n kendisi veya her ikisi de Docker ile sa─član─▒r; ve Docker Vagrant taraf─▒ndan sar─▒l─▒r. Bu ara├ž yelpazesiyle, senaryonuz i├žin en iyisini yapabilirsiniz.

DevOps'ta Docker kaplar─▒ nas─▒l olu┼čturulur, kullan─▒l─▒r ve d├╝zenlenir http://www.javamagazine.mozaicreader.com/JulyAug2015#&pageSet=34&page=0


8



─░lgili yay─▒nlar


Git taahh├╝t mesajlar─▒nda ge├žmi┼č zaman veya ┼čimdiki zaman kullanmal─▒ m─▒y─▒m? [kapal─▒]

Dizin olu┼čtururken neden INCLUDE deyimini kullan─▒n?

URL'leri kodlamak i├žin encodeURI veya encodeURIComponent kullanmal─▒ m─▒y─▒m?

JavaScript'te bir nesne olu┼čturmak i├žin en iyi yol hangisidir? Bir nesne ├Âzelli─činden ├Ânce var 'gerekli midir?

Sanal makineleri masa├╝st├╝ ortamlar─▒nda ├žal─▒┼čt─▒rmak i├žin serseri kullanma

U├žtan uca testlerim i├žin ─░letki mi yoksa Karma m─▒ kullanmal─▒y─▒m? [kapal─▒]

Maven Repo i├žin Nexus veya Artifactory kullanmal─▒ m─▒y─▒z?

size_t veya ssize_t [duplicate] kullanmal─▒

─░┼č katman─▒m i├žin EJB3 veya Spring kullanmal─▒ m─▒y─▒m?

ASP.NET Core MVC geli┼čtirme i├žin AddMvc veya AddMvcCore kullanmal─▒ m─▒y─▒m?

Etiketle ilgili di─čer sorular [vagrant]


Do─čru JSON i├žerik t├╝r├╝ nedir?

Ba┼čka bir web sayfas─▒na nas─▒l y├Ânlendiririm?

Bir dizginin JavaScript'te bir alt dize i├žerip i├žermedi─čini kontrol etme

JavaScript'te "kat─▒ kullan─▒m─▒" ne yapar ve bunun arkas─▒ndaki sebep nedir?

Ge├žerli Git ├žal─▒┼čma a─čac─▒ndan yerel (izlenmeyen) dosyalar nas─▒l kald─▒r─▒l─▒r

Python'da metas─▒n─▒flar nelerdir?

Linux'ta belirli bir metin i├žeren t├╝m dosyalar─▒ nas─▒l bulurum?

Git'teki birle┼čtirme ├žat─▒┼čmalar─▒ nas─▒l ├ž├Âz├╝l├╝r

Tan─▒mlay─▒c─▒ C++ Kitap Rehberi ve Listesi

Google neden bir s├╝re ├Ânce haz─▒rl─▒yor? JSON yan─▒tlar─▒na?