Czy powinienem używać Vagrant lub Docker do tworzenia izolowanego środowiska? [zamknięte]

zamknięte . To pytanie musi być bardziej skoncentrowane . Obecnie nie przyjmuje odpowiedzi.

chcesz poprawić to pytanie? Update the question so it edytując ten post.

Zamknięte 3 lata temu .

Popraw to pytanie

Używam Ubuntu do rozwoju i wdrażania i mam potrzebę stworzenia izolowanego środowiska.

Rozważam albo Vagrant albo Docker w tym celu. Jakie są plusy i minusy, czyli jak te rozwiązania się porównują?
 2116
Author: Peter Mortensen, 2013-05-20

10 answers

Jeśli twoim celem jest izolacja, myślę, że Docker jest tym, czego chcesz.

Vagrant to menedżer maszyn wirtualnych. Pozwala na skrypt konfiguracji maszyny wirtualnej, jak również aprowizacji. Jednak nadal jest to maszyna wirtualna zależna od VirtualBox (lub innych) z ogromnym obciążeniem. Wymaga to posiadania pliku na dysku twardym, który może być ogromny, zajmuje dużo pamięci ram, a wydajność może nie być zbyt dobra.

Docker natomiast używa jądra cgroup i przestrzeń nazw poprzez LXC . Oznacza to, że używasz tego samego jądra co host i tego samego systemu plików. Możesz użyć Dockerfile za pomocą polecenia docker build w celu obsługi Aprowizacji i konfiguracji kontenera. Masz przykład na docs.docker.com Jak zrobić plik Dockerfile; jest to bardzo intuicyjne.

Jedynym powodem, dla którego możesz chcieć użyć Vagrant, jest to, że musisz wykonać BSD, Windows lub inny rozwój nie-Linuksowy na swoim Ubuntu box. W przeciwnym razie idź na Docker.

 1171
Author: creack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-24 23:08:09

Zastrzeżenie: napisałem Vagrant! Ale ponieważ napisałem Vagrant, większość mojego czasu spędzam w świecie DevOps, który obejmuje oprogramowanie takie jak Docker. Pracuję z wieloma firmami używającymi Vagrant i wielu używa Dockera, i widzę, jak te dwa współdziałają.

Zanim powiem za dużo, bezpośrednia odpowiedź: w twoim konkretnym scenariuszu (pracujesz sam, pracujesz na Linuksie, używasz Dockera w produkcji), możesz trzymać się samego Dockera i uprościć sprawy. W wielu innych scenariuszach (Omawiam dalej), to nie jest takie proste.

Nie jest poprawne porównywanie Vagranta do Dockera. W niektórych scenariuszach nakładają się, a w zdecydowanej większości nie. właściwie, bardziej trafne porównanie byłoby Vagrant vs coś takiego jak Boot2Docker(minimalny system operacyjny, który może uruchomić Dockera). Vagrant jest poziomem powyżej Dockera pod względem abstrakcji, więc w większości przypadków nie jest to uczciwe porównanie.

Vagrant uruchamia rzeczy do uruchamiania aplikacji / usług w celu rozwoju. To może bądź na VirtualBox, VMware. Może być zdalny jak AWS, OpenStack. Wewnątrz nich, jeśli używasz kontenerów, Vagrant ma to gdzieś i obejmuje to, że: może automatycznie instalować, ściągać, budować i uruchamiać kontenery Docker, na przykład. W Vagrant 1.6, Vagrant ma Środowiska programistyczne oparte na dockerze i obsługuje używanie Dockera z tym samym przepływem pracy, co Vagrant w Linuksie, Mac i Windows. Vagrant nie próbuje zastąpić Dockera tutaj, On obejmuje praktyki Dockera.

Docker specjalnie obsługuje kontenery Docker. Jeśli porównujesz bezpośrednio do Vagrant: jest to konkretnie bardziej specyficzne (może uruchamiać tylko kontenery Docker), mniej elastyczne (wymaga Linuksa lub hosta Linuksa gdzieś) rozwiązanie. Oczywiście, jeśli mówisz o produkcji lub CI, nie ma porównania do Vagrant! Vagrant nie mieszka w tych środowiskach, więc Docker powinien być używany.

Jeśli Twoja organizacja uruchamia tylko kontenery Docker dla wszystkich swoich projektów i ma tylko deweloperów działających na Linuksie, w takim razie Docker mógłby pracować dla Ciebie!

W Przeciwnym Razie nie widzę korzyści z próby użycia samego Dockera, ponieważ tracisz wiele z tego, co Vagrant ma do zaoferowania, które mają realne korzyści biznesowe / produktywności: {]}

  • Vagrant może uruchomić VirtualBox, VMware, AWS, OpenStack itp. maszyny. Nieważne, czego potrzebujesz, Vagrant może go uruchomić. Jeśli używasz Dockera, Vagrant może zainstalować Dockera na dowolnym z nich, abyś mógł go do tego wykorzystać cel.

  • Vagrant to pojedynczy przepływ pracy dla wszystkich twoich projektów. Innymi słowy, jest to tylko jedna rzecz, którą ludzie muszą się nauczyć, aby uruchomić projekt, niezależnie od tego, czy znajduje się on w kontenerze Docker, czy nie. Jeśli, na przykład, w przyszłości, konkurent pojawi się, aby konkurować bezpośrednio z Dockerem, Vagrant będzie mógł uruchomić również to.

  • Vagrant działa na systemach Windows (z powrotem do XP), Mac( z powrotem do 10.5) i Linux (z powrotem do jądra 2.6). We wszystkich trzech przypadkach przepływ pracy jest taki sam. Jeśli użyj Dockera, Vagrant może uruchomić maszynę (VM lub zdalną), która może uruchomić Dockera na wszystkich trzech z tych systemów.

  • Vagrant wie, jak skonfigurować zaawansowane lub nietrywialne rzeczy, takie jak Sieć i synchronizacja folderów. Na przykład: Vagrant wie, jak dołączyć statyczny adres IP do komputera lub portów forward, a konfiguracja jest taka sama bez względu na to, jakiego systemu używasz (VirtualBox, VMware, itp.) Dla zsynchronizowanych folderów Vagrant udostępnia wiele mechanizmów pozwalających na przeniesienie plików lokalnych do zdalnego komputera (VirtualBox współdzielone foldery, NFS, rsync, Samba [plugin], itp.). Jeśli używasz Dockera, nawet Dockera z maszyną wirtualną bez Vagrant, musiałbyś to zrobić ręcznie lub musieliby w tym przypadku wynaleźć Vagrant na nowo.

  • Vagrant 1.6 ma pierwszorzędną obsługę środowisk programistycznych opartych na dockerze. Nie spowoduje to uruchomienia maszyny wirtualnej na Linuksie i automatycznie uruchomi maszynę wirtualną na komputerach Mac i Windows. Efektem końcowym jest to, że praca z Docker jest jednolity na wszystkich platformach, podczas gdy Vagrant nadal obsługuje żmudne szczegóły, takie jak sieć, synchronizowane foldery itp.

Aby odnieść się do konkretnych kontrargumentów, które słyszałem za użyciem Dockera zamiast Vagranta:

  • "to mniej ruchomych części" - tak, może być, jeśli używasz Dockera wyłącznie dla każdego projektu. Nawet wtedy rezygnuje się z elastyczności przy blokowaniu Dockera. Jeśli kiedykolwiek zdecydujesz się nie używać Dockera dla żadnego projektu, past, teraźniejszość lub przyszłość, wtedy będziesz miał więcej ruchomych części. Jeśli użyłeś Vagrant, masz tę jedną ruchomą część, która wspiera resztę.

  • "jest szybciej!"- Gdy masz hosta, który może uruchamiać kontenery Linuksa, Docker jest zdecydowanie szybszy w uruchamianiu kontenera niż jakakolwiek maszyna wirtualna. Ale uruchomienie maszyny Wirtualnej (lub Zdalnej) jest jednorazowym kosztem. W ciągu dnia większość Włóczęgów nigdy nie niszczy swojej maszyny wirtualnej. To dziwne. optymalizacja pod kątem środowisk programistycznych. W produkcji, gdzie Docker naprawdę błyszczy, rozumiem potrzebę szybkiego obracania kontenerów w górę/w dół.

Mam nadzieję, że teraz jest jasne, że jest bardzo trudne, i uważam, że nie poprawne, aby porównać Dockera do Vagranta. Dla środowisk programistycznych Vagrant jest bardziej abstrakcyjny, bardziej ogólny. Docker (i różne sposoby sprawiania, że zachowuje się jak Vagrant) jest specyficznym przypadkiem użycia Vagrant, ignorując Wszystko inne Vagrant ma do zaoferowania.

Podsumowując: w bardzo specyficznych przypadkach użycia Docker jest z pewnością możliwym zamiennikiem Vagranta. W większości przypadków nie jest. Vagrant nie utrudnia korzystania z Dockera; w rzeczywistości robi, co może, aby to doświadczenie było płynniejsze. Jeśli okaże się, że nie jest to prawda, z przyjemnością przyjmę sugestie, aby poprawić rzeczy, ponieważ celem Vagrant jest równie dobrze pracować z każdym systemem.

Mam nadzieję, że to wszystko wyjaśni!

 2361
Author: Mitchell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-20 00:29:40

Jestem autorem Dockera.

Krótka odpowiedź jest taka, że jeśli chcesz zarządzać maszynami, powinieneś użyć Vagrant. A jeśli chcesz budować i uruchamiać środowiska aplikacji, powinieneś użyć Dockera.

Vagrant jest narzędziem do zarządzania maszynami wirtualnymi. Docker to narzędzie do budowania i wdrażania aplikacji poprzez pakowanie ich w lekkie pojemniki. Kontener może pomieścić prawie każdy komponent oprogramowania wraz z jego zależnościami (pliki wykonywalne, biblioteki, konfiguracja plików itp.) i wykonać go w gwarantowanym i powtarzalnym środowisku uruchomieniowym. Dzięki temu bardzo łatwo jest zbudować aplikację raz i wdrożyć ją w dowolnym miejscu - na laptopie do testowania, a następnie na różnych serwerach do wdrożenia na żywo itp.

To powszechne błędne przekonanie, że można używać Dockera tylko na Linuksie. Docker można również zainstalować na komputerach Mac i Windows. Po zainstalowaniu na komputerze Mac Docker łączy małą maszynę wirtualną z Linuksem(25 MB na dysku!), który działa jak owijka do pojemnika. Raz zainstalowany jest całkowicie przezroczysty; możesz używać wiersza poleceń Dockera w dokładnie taki sam sposób. Daje to to, co najlepsze z obu światów: możesz testować i rozwijać swoją aplikację za pomocą kontenerów, które są bardzo lekkie, łatwe do przetestowania i łatwe do przenoszenia (patrz na przykład https://hub.docker.com do udostępniania kontenerów wielokrotnego użytku społeczności Docker) i nie musisz się martwić o szczegóły zarządzania maszynami wirtualnymi, które są tylko środkiem do koniec i tak.

Teoretycznie możliwe jest użycie Vagrant jako warstwy abstrakcyjnej dla Dockera. Polecam z dwóch powodów:

  • Po pierwsze, Vagrant nie jest dobrą abstrakcją dla Dockera. Vagrant został zaprojektowany do zarządzania maszynami wirtualnymi. Docker został zaprojektowany do zarządzania uruchomieniem aplikacji. Oznacza to, że Docker, z założenia, może wchodzić w interakcje z aplikacją w bogatszy sposób i ma więcej informacji na temat środowiska wykonawczego aplikacji. Prymitywy w Docker to procesy, strumienie logów, zmienne środowiskowe i połączenia sieciowe między komponentami. Prymitywami w Vagrant są maszyny, urządzenia blokowe i klucze ssh. Vagrant po prostu siedzi niżej w stosie, a jedynym sposobem na interakcję z kontenerem jest udawanie, że jest to po prostu inny rodzaj maszyny, którą można "uruchomić" i "zalogować się". Możesz więc wpisać" vagrant up " za pomocą wtyczki Docker i stanie się coś ładnego. Czy jest to substytut pełnego zakresu tego, co Docker może zrobić? Spróbuj native Doker na kilka dni i przekonaj się sam :)

  • Po drugie, argument zamykający. "Jeśli użyjesz Vagrant jako abstrakcji, nie zostaniesz zamknięty w Dockerze!". Z punktu widzenia Vagrant, który jest przeznaczony do zarządzania maszynami, ma to sens: czy kontenery nie są tylko innym rodzajem maszyny? Podobnie jak Amazon EC2 i VMware, musimy uważać, aby nie wiązać naszych narzędzi do tworzenia kopii zapasowych z żadnym konkretnym dostawcą! To stworzy lock-in-lepiej abstrakcyjne to wszystko z dala z włóczęgą. Tylko, że to zupełnie nie pasuje do Dockera. Docker nie udostępnia maszyn; zawija aplikację w lekki, przenośny tryb runtime, który można upuścić w dowolnym miejscu.

Jaki tryb runtime wybierzesz dla swojej aplikacji nie ma nic wspólnego z tym, jak udostępniasz swoje maszyny! Na przykład dość często wdraża się aplikacje na komputerach, które są aprowizowane przez kogoś innego (na przykład instancję EC2 wdrożoną przez Administratora Systemu, być może korzystanie z Vagrant), lub do nagich metalowych maszyn, których Vagrant nie może w ogóle zapewnić. I odwrotnie, możesz użyć Vagrant do dostarczania maszyn, które nie mają nic wspólnego z rozwojem Twojej aplikacji - na przykład gotowego do użycia okna IIS lub czegoś takiego. Możesz też użyć Vagrant do tworzenia maszyn dla projektów, które nie używają Dockera - być może używają kombinacji rubygems i rvm do zarządzania zależnościami i sandboxingu na przykład.

Podsumowując: Vagrant jest do zarządzania maszynami, Docker służy do budowania i uruchamiania środowisk aplikacji.

 1438
Author: Solomon Hykes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-08 20:22:37

Odpowiadam, przyznając, że nie mam doświadczenia z Dockerem, poza tym, że jestem zapalonym obserwatorem tego, co wygląda na naprawdę zgrabne rozwiązanie, które zyskuje na popularności.

Mam przyzwoite doświadczenie z Vagrant i mogę go gorąco polecić. Jest to z pewnością bardziej ciężkie rozwiązanie, jeśli chodzi o to, że jest oparte na VM zamiast na LXC. Jednak znalazłem przyzwoity laptop (8 GB RAM, procesor i5/i7) nie ma problemów z uruchomieniem maszyny Wirtualnej za pomocą Vagrant/VirtualBox obok narzędzia programistyczne.

Jedną z naprawdę wspaniałych rzeczy z Vagrant jest integracja z Puppet/Chef / skrypty powłoki do automatyzacji konfiguracji. Jeśli używasz jednej z tych opcji do skonfigurowania środowiska produkcyjnego, możesz utworzyć środowisko programistyczne, które jest prawie identyczne, jak masz zamiar uzyskać, a to jest dokładnie to, czego chcesz.

Inną wspaniałą rzeczą z Vagrant jest to, że możesz wersję swojego Vagrantfile wraz z Twoim kod aplikacji. Oznacza to, że wszyscy inni w Twoim zespole mogą udostępniać ten plik i masz gwarancję, że wszyscy pracują z tą samą konfiguracją środowiska.

Co ciekawe, Vagrant i Docker mogą być komplementarne. Vagrant może być rozszerzony o obsługę różnych dostawców wirtualizacji i być może Docker jest jednym z takich dostawców, który otrzyma wsparcie w najbliższej przyszłości. Zobacz https://github.com/dotcloud/docker/issues/404 do niedawnej dyskusji na temat temat.

 86
Author: Chris Bushell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-24 23:11:36

Są bardzo komplementarne.

Używam kombinacji VirtualBox, Vagrant i Docker dla wszystkich moich projektów od kilku miesięcy i mocno odczuwam następujące korzyści.

W Vagrant możesz całkowicie zrezygnować z samodzielnej obsługi Chef ' a, a wszystko, co musisz zrobić, to przygotować komputer, który uruchomi pojedynczy mały skrypt powłoki, który zainstaluje docker. Oznacza to, że moje pliki Vagrant dla każdego projektu są prawie identyczne i bardzo proste.

Oto typowy 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

Plik Bootstrap instalujący Dockera wygląda tak

#!/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

Teraz, aby uruchomić wszystkie usługi, mam skrypt docker_start, który wygląda tak:

#!/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"
W tym przykładzie uruchamiam MongoDB, Elastisearch, RabbitMQ i Memcached Konfiguracja samodzielnego kucharza bez Dockera byłaby znacznie bardziej skomplikowana.

Ostatni duży plus zyskuje się, gdy przechodzisz do produkcji, przełożenie środowiska programistycznego na infrastrukturę hostów, które są takie same, ponieważ mają wystarczającą konfigurację, aby uruchomić docker, oznacza bardzo mało pracy.

Jeśli jesteś zainteresowany, mam bardziej szczegółowy artykuł na temat środowiska programistycznego na mojej własnej stronie internetowej pod adresem

Implementacja Środowiska Programistycznego Vagrant / Docker

 64
Author: Mark Stratmann,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-28 19:13:55

Vagrant-LXC jest wtyczką do Vagrant, która pozwala na użycie LXC do udostępnienia Vagrant. Nie ma wszystkich funkcji, które ma domyślna Vagrant VM (VirtualBox), ale powinien pozwolić ci na większą elastyczność niż kontenery docker. W linku znajduje się film pokazujący jego możliwości, który warto obejrzeć.

 53
Author: GnarlinBrando,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-18 15:06:42

Z Vagrant teraz możesz mieć Dockera jako dostawcę. http://docs.vagrantup.com/v2/docker / . Docker provider może być używany zamiast VirtualBox lub VMware.

Pamiętaj, że możesz również użyć Dockera do aprowizacji z Vagrant. Jest to zupełnie inne niż używanie Dockera jako dostawcy. http://docs.vagrantup.com/v2/provisioning/docker.html

Oznacza to, że możesz zastąpić Chef lub Puppet Dockerem. Możesz użyć kombinacji takich jak Docker jako provider (VM) z Chef jako provisioner. Możesz też użyć VirtualBox jako dostawcy i Docker jako provisioner.

 47
Author: zainengineer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-24 23:27:25

Używanie obu jest ważną częścią testowania dostarczania aplikacji. Dopiero zaczynam angażować się w Docker i bardzo ciężko myślę o zespole aplikacji, który ma straszną złożoność w budowaniu i dostarczaniu swojego oprogramowania. Pomyśl o klasycznym projekcie Phoenix / ciągłej realizacji.

Myślenie idzie tak:

  • weź komponent aplikacji Java / Go i zbuduj go jako kontener (Uwaga, Nie wiem czy aplikacja powinna być wbudowana w kontener lub zbudowany wtedy zainstalowane do kontenera)
  • dostarcz kontener do Vagrant VM.
  • Powtórz to dla wszystkich składników aplikacji.
  • iteracja na komponencie(komponentach) do kodu przeciw.
  • ciągłe testowanie mechanizmu dostarczania do VM(s) zarządzanego przez Vagrant
  • spać dobrze wiedząc, kiedy nadszedł czas na wdrożenie kontenera, że testy integracyjne odbywały się w sposób o wiele bardziej ciągły niż przed Dockerem.

To wydaje się być logiczne rozszerzenie stwierdzenia Mitchella, że Vagrant jest dla rozwoju połączonego z myśleniem Farley/Humbles w ciągłym dostarczaniu. Jeśli jako programista zmniejszę pętlę informacji zwrotnej na temat testowania integracji i dostarczania aplikacji, nastąpi wyższa jakość i lepsze środowisko pracy.

Fakt, że jako deweloper stale i konsekwentnie dostarczam kontenery do maszyny wirtualnej i testuję aplikację bardziej holistycznie oznacza, że wydania produkcyjne będą dalej uproszczone.

Więc widzę Vagrant ewoluuje jako sposób wykorzystania niektórych niesamowite konsekwencje Docker będzie miał dla wdrażania aplikacji.

 16
Author: Boyd Hemphill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-20 00:56:16

Zdecydowanie Docker za wygraną!

Jak zapewne wiecie Vagrant służy do zarządzania maszynami wirtualnymi, podczas gdy Docker służy do zarządzania kontenerami oprogramowania. Jeśli nie jesteś świadomy różnicy, oto: Kontener oprogramowania może współdzielić tę samą maszynę i jądro z innymi kontenerami oprogramowania. Korzystając z kontenerów oszczędzasz pieniądze, ponieważ nie marnujesz zasobów na wiele systemów operacyjnych( jądra), możesz spakować więcej oprogramowania na serwer, zachowując dobry stopień izolacja.

Oczywiście to nowa dyscyplina dbania o własne pułapki i wyzwania.

Przejdź do Docker Swarm, jeśli twoje wymagania przekraczają limit zasobów pojedynczej maszyny.

 10
Author: Jairo Andres Velasco Romero,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-21 23:11:16

W magazynie Oracle Java znajduje się bardzo pouczający artykuł o używaniu Dockera w połączeniu z Vagrant (i Puppet):

Wniosek

Lekkie kontenery Dockera są szybsze w porównaniu z klasycznymi maszynami wirtualnymi i stały się popularne wśród programistów i jako część CD i DevOps inicjatywy. Jeśli twoim celem jest izolacja, Docker jest doskonałym wyborem. Vagrant jest menedżerem maszyn wirtualnych, który umożliwia konfiguracje skryptów Indywidualne jak również zrobić provisioning. Jednak jest to sill a Vm zależny od VirtualBox (lub innego menedżera VM) z relatywnie duży nad głową. Wymaga posiadania dysku twardego bezczynnego, który może być ogromny, zajmuje dużo pamięci RAM, a wydajność może być nieoptymalna. Docker używa jądra cgroups i namespace isolation poprzez LXC. Oznacza to, że używasz tego samego jądra co host i tego samego systemu ile. Vagrant to poziom powyżej Dockera pod względem abstrakcji, więc są nie bardzo. porównywalne. Narzędzia do zarządzania konfiguracją takie jak Puppet to szeroko stosowany do tworzenia środowisk docelowych. Ponowne wykorzystanie istniejących Rozwiązania oparte na marionetkach są łatwe dzięki Docker. Możesz również pokroić swój rozwiązanie, więc Infrastruktura jest zaopatrywana w Puppet; the oprogramowanie pośredniczące, sama aplikacja biznesowa lub obie są aprowizowane z Dockerem; a Dockera owija Włóczęga. Z tym zakresem narzędzia, możesz zrobić to, co najlepsze dla Twojego scenariusza.

Jak budować, używać i orkiestracja kontenerów Docker w DevOps http://www.javamagazine.mozaicreader.com/JulyAug2015#&pageSet=34&page=0

 8
Author: Adrian Krebs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-24 23:30:19