Питання Чи повинен я використовувати Vagrant або Docker для створення ізольованого середовища? [ЗАЧИНЕНО]


Я використовую Ubuntu для розробки та розгортання та потребу в створенні ізольованого середовища.

Я розглядаю або Vagrant, або Docker для цієї мети. Які переваги та недоліки, або як порівнювати ці рішення?


1888
2018-05-20 10:05


походження


Обидва комбінації тепер: docs.vagrantup.com/v2/provisioning/docker.html - Alp
Ми могли б не видалити це, народи? Можливо, це не тема і може бути ЗАЧИНЕНО, але з довгими відповідями від авторів обох інструментів (і переглядів на 90 кілобайт) це цінно і не заслуговує на видалення. - Jeremy
Ваше пощастило отримати відповіді обох письменників двох служб: Мітчелла та Соломона Хейкса - itsazzad


Відповіді:


Якщо ваша мета - це ізоляція, я думаю, що Докер це те, що ви хочете.

Vagrant - це менеджер віртуальних машин. Це дозволяє скриптувати конфігурацію віртуальної машини, а також надавати послуги. Проте це все-таки віртуальна машина в залежності від VirtualBox (або інші) з величезними накладними витратами. Це вимагає наявності файлу жорсткого диска, який може бути величезним, воно займає багато барана, а продуктивність може бути не дуже добре.

Докер, з іншого боку, використовує cgroup і назви місць через ядро LXC. Це означає, що ви використовуєте одне ядро ​​як хост і ту ж файлову систему. Ви можете використовувати Dockerfile з docker build команда для обробки та конфігурації вашого контейнера. У вас є приклад docs.docker.com про те, як зробити ваш Dockerfile; це дуже інтуїтивно.

Єдина причина, якою Ви могли б хотіти використовувати Vagrant - це те, що вам потрібно зробити BSD, Windows або інші розробки, не пов'язані з Linux, у вашому вікні Ubuntu. Інакше, ідіть до Докера.


1044
2018-05-26 16:46



На жаль, поки немає. Якщо ви працюєте в 32-бітній системі, для запуску docker вам знадобиться віртуальний комп'ютер із 64-розрядною гостьовою системою. Однак, за допомогою go1.1 32-бітна підтримка покращиться, і можливо, що docker буде підтримувати 32 бітну аркушу незабаром - creack
"Mac, Windows і деякі дистрибутиви Linux не можуть наразі запустити Docker, тому ми допоможемо вам налаштувати віртуальну машину Ubuntu і запустити Docker всередині цього". Тому, якщо ви не перебуваєте на основному дистрибутиві Linux, ваше додаток буде працювати в докері, який сам по собі буде працювати у віртуальній машині. - aleemb
Це вірно для Mac та Windows, але оскільки docker 0.7, будь-який дистрибутив Linux працює нормально. Якщо ви знаєте непрацюючого, будь ласка, дайте мені знати. Крім того, якщо у вас немає стека Mac або Windows (що навряд чи може статися), ви не хочете запускати Docker будь-де, окрім Linux. Докер-клієнт працює добре на Mac, повинен працювати найближчим часом на BSD, і в подальшому демон буде підтримувати BSD, Solaris і Mac. - creack
Якщо хтось читає ці коментарі, ви повинні знати, що Docker hit ver1.0 всього 12 днів тому (blog.docker.com/2014/06/its-here-docker-1-0), а ціла низка різних платформ стабільна і підтримується зараз (docs.docker.com/installation) - JorgeArtware
бродяга має LXC і docker providingers. Проте - Бродяга і докер - принципово різні речі. Vagrant - це виключно для середовища розробки, докер - скоріше для виробництва та лише для Linux. - Dannyboy


Відмова від відповідальності: я написав Vagrant! Але тому, що я написав Вагрант, я витрачаю більшу частину часу на життя в світі DevOps, який включає програмне забезпечення, таке як Докер. Я працюю з багатьма компаніями, які використовують Vagrant, і багато хто використовує Docker, і я бачу, як ці два взаємодії.

Перш ніж говорити занадто багато, пряма відповідь: у вашому конкретному сценарії (працюючи самостійно, працюючи на Linux, використовуючи Docker у виробництві), ви можете дотримуватися Docker самостійно та спростити роботу. У багатьох інших сценаріях (я обговорюю далі), це не так просто.

Неправильно порівнювати Vagrant з Докером. У деяких сценаріях вони перекриваються, і в переважній більшості вони цього не роблять. Насправді, більш вдалим порівнянням буде Vagrant проти щось на зразок Boot2Docker (мінімальна ОС, яка може запускати Docker). Вагрант - це рівень, який вище Докер в плані абстракцій, тому в більшості випадків це не є справедливим порівнянням.

Vagrant запускає речі для запуску додатків / послуг з метою розробки. Це може бути на VirtualBox, VMware. Він може бути віддаленим, як AWS, OpenStack. У тих самих випадках, якщо ви використовуєте контейнери, Vagrant не піклується про те, що він може автоматично встановлювати, згорнути, створювати та запускати контейнери Docker, наприклад. З Vagrant 1.6, Vagrant має Докер на базі середовищ розробки, і підтримує використання Docker з тим самим робочим процесом, як Vagrant через Linux, Mac та Windows. Вагрант не намагається замінити Докер тут, він охоплює практику Докера.

Докер спеціально запускає контейнери Docker. Якщо порівняти безпосередньо з Vagrant: це конкретно більш конкретне (можна запускати тільки контейнери Docker), менш гнучкий (вимагає де-небудь Linux або Linux host). Звичайно, якщо ви говорите про виробництво або CI, немає ніякого порівняння з Vagrant! Бродяга не живе в цих середовищах, і тому слід використовувати Докер.

Якщо ваша організація використовує тільки контейнери Docker для всіх своїх проектів, і лише розробники працюють на Linux, тоді добре, Docker може точно працювати для вас!

В іншому випадку я не бачу переваги для спроби використовувати Docker поодинці, оскільки ви втрачаєте багато того, що може запропонувати Вагрант, що має реальні переваги для бізнесу / продуктивності.

  • Vagrant може запускати машини VirtualBox, VMware, AWS, OpenStack та ін. Неважливо, що вам потрібно, Вагрант може запустити його. Якщо ви використовуєте Docker, Vagrant може встановити Docker на будь-який з них, щоб ви могли використовувати їх для цієї мети.

  • Vagrant - це єдиний робочий процес для всіх ваших проектів. Або по-іншому, людина повинна навчитися керувати проектом, незалежно від контексту Docker. Якщо, наприклад, у майбутньому з'явиться суперник, щоб конкурувати безпосередньо з Докером, він також зможе це запустити.

  • Бродяга працює на Windows (назад до XP), Mac (назад до 10.5) і Linux (назад до ядра 2.6). У всіх трьох випадках робочий процес однаковий. Якщо ви використовуєте Docker, Vagrant може запустити машину (VM або пульт дистанційного керування), яка зможе запустити Docker на всіх трьох цих системах.

  • Vagrant знає, як налаштувати деякі просунуті чи нетривіальні речі, такі як створення та синхронізація папок. Наприклад: Vagrant знає, як приєднати статичний IP до машинного чи переднього портів, а конфігурація однакова незалежно від того, яка система ви використовуєте (VirtualBox, VMware та ін.) Для синхронізованих папок Vagrant надає кілька механізмів для отримання вашої локальної файли на віддалену машину (спільні папки VirtualBox, NFS, rsync, Samba [плагін] тощо). Якщо ви використовуєте Docker, навіть Docker з VM без Vagrant, вам доведеться вручну зробити це, або їм доведеться винаходити Vagrant у цьому випадку.

  • Vagrant 1.6 має першокласну підтримку для Докер на базі середовищ розробки. Це не призведе до запуску віртуальної машини на Linux і автоматично запускає віртуальну машину на Mac і Windows. Кінцевим результатом є те, що робота з Docker однакова на всіх платформах, тоді як Vagrant все ще обробляє втомливі деталі таких речей, як мережі, синхронізовані папки тощо.

Щоб вирішувати конкретні суперечливі аргументи, які я чув на користь використання Docker замість Vagrant:

  • "Це менш рухомі частини" - Так, це може бути, якщо ви використовуєте Docker виключно для кожного проекту. Навіть тоді це приносить в жертву гнучкість для блокування Docker. Якщо ви коли-небудь вирішили не використовувати Docker для будь-якого проекту, минулого, справжнього або майбутнього, то у вас буде більше рухомих частин. Якщо ви використовували Vagrant, у вас є така рухома частина, яка підтримує решту.

  • "Це швидше!" - Після того, як у вас є хост, який може запускати контейнери Linux, Docker, безумовно, швидше запускає контейнер, ніж будь-яка віртуальна машина для запуску. Але запуск віртуальної машини (або віддаленої машини) - це одноразові витрати. Упродовж дня більшість користувачів Vagrant ніколи не знищують їх віртуальну машину. Це дивна оптимізація для середовищ розробки. У виробництві, де Докер дійсно світить, я розумію, що потрібно швидко переміщати контейнери вгору / вниз.

Тепер я сподіваюся, що зрозуміти, що дуже важко, і я вважаю не правильним, порівнювати Докера з Ваггрантом. Для середовищ Dev, Vagrant є більш абстрактним, більш загальним. Докер (і різноманітні способи, як ви можете зробити його поводитися як Vagrant) є конкретним випадком використання Vagrant, ігноруючи все інше, що може запропонувати Вагрант.

На закінчення: у високоспеціалізованих випадках використання, Докер, безумовно, є можливим заміною для Vagrant. У більшості випадків використання це не так. Бродяга не перешкоджає використанню Докера; він насправді робить все можливе, щоб зробити цей досвід більш гладким. Якщо ви виявите, що це неправда, я радий прийняти пропозиції щодо покращення речей, оскільки мета Vagrant полягає в тому, щоб працювати однаково добре з будь-якою системою.

Сподіваюся, що це очистить речі!


2173
2018-01-23 16:55



@JaredMarkell Я думаю, що він, можливо, шукає веб-сервіс, який дозволяє йому керувати своїми машинами Vagrant, такими як Пробокс. - Ryan Kennedy
@ Мітчелл Я просто хотів сказати спасибі за пояснення цього в такій деталі. Очевидно, вам неможливо бути цілком об'єктивним, тому я вдячний вам, що ви взяли час, щоб пояснити нюанси та різні ситуації, в яких вони можуть бути використані. Я думаю, що сьогодні багато плутанини навколо різних інструментів полягає в тому, що вони багато перекриваються, і багато людей хочуть рішення, яке відповідає всім вимогам, коли хтось просто говорить їм, що робити, і вони можуть це реалізувати. Краса вашої відповіді полягає в тому, що вона відповідає на основне питання: як я можу створити ізольоване середовище? (незалежно від інструментів). - Jordan
@ JaredMarkell Docker має REST API docs.docker.com/reference/api/docker_remote_api - Tarnay Kálmán
@ Oğuzçelikdemir Vagrant може зробити набагато більше, ніж це. Звичайно, якщо ви підготуєте конкретну віртуальну машину для кожного проекту, це триватиме. Але під час розробки я часто докладаю додаткових послуг / демонів / налаштувань (наприклад, коли я вирішу використовувати RabbitMQ для проекту під час розробки). Підхід під керуванням VM вимагатиме, щоб ви підготували нове зображення, встановивши та налаштувавши RabbitMQ, і змусили розробників змінити свій віртуальний мультимедійний модуль на цей новий. Для Vagrant - я додаю відповідні лінії в бродячій конфігурації, і всі розробники можуть легко модернізувати свої віртуальні машини (використовуючи vagrant provision) - Tomasz Struczyński
(Ви маєте на увазі "розкриття", розкриваючи щось важливе, а не "відмову", заперечуючи відповідальність: english.stackexchange.com/q/115850) - Jerry101


Я автор Докера.

Коротка відповідь полягає в тому, що, якщо ви хочете керувати машинами, ви повинні використовувати Vagrant. І якщо ви хочете створити та запустити середовища додатків, вам слід скористатися Docker.

Vagrant - це інструмент для керування віртуальними машинами. Докер - це інструмент для створення та розгортання додатків, упаковуючи їх у легкі контейнери. Контейнер може зберігати практично будь-який компонент програмного забезпечення разом із його залежностями (виконуваними файлами, бібліотеками, конфігураційними файлами тощо), і виконувати його в гарантованому та повторюваному середовищі виконання. Завдяки цьому дуже важко одночасно побудувати додаток і розгорнути його всюди - на ноутбуці для тестування, потім на різних серверах для прямого розгортання тощо.

Це загальне помилкове твердження, що ви можете використовувати Docker лише в Linux. Це неправильно; ви також можете встановити Docker на Mac, і підтримується Windows. Коли встановлено на Mac, Docker поєднує в собі крихітну версію Linux VM (25 Мб на диску!), Яка працює як обгортка для вашого контейнера. Після установки це повністю прозорість; ви можете використовувати командний рядок Docker точно так само. Це дає вам найкраще з обох світів: ви можете протестувати та розвивати вашу програму за допомогою контейнерів, які дуже легкі, прості для перевірки та легко пересуватися (див. Наприклад https://hub.docker.com для спільного використання багаторазових контейнерів у спільноті Docker), і вам не потрібно турбуватися про деталі керування віртуальними машинами, які є лише засобом для досягнення мети.

Теоретично можна використовувати Vagrant як абстрактний шар для Docker. Я рекомендую проти цього з двох причин:

  • По-перше, Вагрант не є доброю абстракцією для Докера. Vagrant був розроблений для керування віртуальними машинами. Докер призначений для управління роботою програми. Це означає, що Docker, за конструкцією, може взаємодіяти з додатком у більш багатих способах та мати більше інформації про час виконання програми. Приміти в Docker - це процеси, потоки журналів, змінні середовища та мережеві зв'язки між компонентами. Приміти в Vagrant - це машини, блочні пристрої та SSH-клавіші. Вагрант просто сидить нижче в стеку, і єдиним способом, яким він може взаємодіяти з контейнером, прикидаючи, що це просто інший вид машини, що ви можете "завантажити" і "ввійти в". Так що, звичайно, ви можете ввести "бродячий догори" за допомогою плагіна Docker, і станеться щось хороше. Чи є це заміною повної ширини, що може зробити Докер? Дівчина на пару днів спробує рідний Докер і сама подивиться :)

  • По-друге, аргумент блокування. "Якщо ви використовуєте Vagrant як абстракцію, ви не будете замкнені в Docker!". З точки зору Vagrant, який призначений для управління машинами, це має ідеальний сенс: чи не контейнери просто інший вид машини? Так само, як Amazon EC2 та VMware, ми повинні бути обережними, щоб не прив'язувати наші інструменти надання інформації до конкретного постачальника! Це дозволить створити замок - краще абстрагуватися від неї у всьому. Крім цього цілком пропускається точка Докера. Докер не забезпечує роботу машин; він обгортає вашу програму в легкій портативній середовищі виконання, яку можна скинути скрізь.

Який час виконання вашої програми не має нічого спільного з тим, як ви надасте свої машини! Наприклад, доволі часті розгортання додатків до машин, які надають хтось інший (наприклад, екземпляр EC2, який розгорнуто вашим системним адміністратором, можливо, використовуючи Vagrant) або металевими машинами, які Vagrant взагалі не може забезпечити. І навпаки, ви можете використовувати Vagrant для надання машин, які не мають нічого спільного з розробкою вашої програми - наприклад, готові до використання вікна IIS Windows або щось. Або ви можете використовувати Vagrant для надання машин для проектів, які не використовують Docker - можливо, вони використовують комбінацію rubygems та rvm для управління залежністю та, наприклад, для пісочниці.

У підсумку: Vagrant призначений для керування машинами, і Docker призначений для побудови та роботи середовищ застосування.


1282
2018-03-13 06:16



Просто хотів би відзначити, що Вельмишні аспекти цієї відповіді неправильні. Vagrant не для управління машинами, Vagrant для управління середовищами розробки. Те, що Венгерт спинує машини, в основному історичний. Наступна версія Vagrant має першокласну підтримку, щоб розгортати середовище dev, використовуючи Docker як постачальника безпосередньо на хості або будь-якому VM (Mac, Win). Це також може обернутися сировиною LXC, якщо це те, що хоче хтось (знову ж таки, на хост або VM). Vagrant зацікавлений у створенні портативного середовища розробки, незалежно від того, чи це означає створення віртуальної машини чи ні. - Mitchell
@ Мітчелл - чи можете ви, будь ласка, вказати деякі документи бета-версій, які детально розповідають про це твердження? Я дуже зацікавлений у цьому. - Davide
"Це загальне помилкове уявлення, що ви можете використовувати Docker лише в Linux". Хоча це істинно, точно можна сказати, що ви можете використовувати Linux лише на Docker. Якщо я хочу створити тест-бігун, який використовує мою програму в різних конфігураціях (різні бази даних, версії php, кешування backends тощо), то я легко зможу це зробити з контейнерами docker. Але я не можу бачити, чи буде моя програма правильно працювати в вікні IIS env, або в BSD або OSX. - Mixologic
Ваша перша точка зору застаріла, оскільки Vagrant має вбудовану підтримку постачальників для докерів: docs.vagrantup.com/v2/provisioning/docker.html - Alp
Публікація застаріла. Vagrant підтримує Docker як провайдер зараз. І є кілька відеороликів про демонстрацію того, як ви можете використовувати Уагран та Докер в унісон на своїх блог. - sargas


Я вводить передмову мою відповідь, допустивши, що у мене немає досвіду роботи з Докером, окрім як завзятого спостерігача від того, що виглядає як справді акуратне рішення, яке набирає багато тяги.

У мене є пристойний досвід роботи з Vagrant і може дуже рекомендую це. Це, безумовно, більш важке рішення з точки зору того, що це VM замість LXC на основі. Тим не менш, я знайшов гідний ноутбук (8 Гб оперативної пам'яті, процесор i5 / i7) не має проблем з керуванням VM, використовуючи Vagrant / VirtualBox разом із інструментами розробки.

Однією з справжніх великих речей з Vagrant є інтеграція з Кукольник/Шеф-кухар/ shell скрипти для автоматизації конфігурації. Якщо ви використовуєте одне з цих параметрів для налаштування вашого виробничого середовища, ви можете створити середовище розробки, яке настільки ж близьке до ідентичності, який ви збираєтеся отримати, і це саме те, що ви хочете.

Інша велика річ з Vagrant полягає в тому, що ви можете версію вашої Vagrantfile разом з кодом програми. Це означає, що всі інші учасники вашої команди можуть поділитися цим файлом, і ви гарантуєте, що кожен працює з тією ж конфігурацією середовища.

Цікаво, що Вагрант і Докер насправді можуть бути безкоштовними. Vagrant може бути розширений для підтримки різних постачальників віртуалізації, і, можливо, можливо, що Docker є одним з таких постачальників, який отримає підтримку в найближчому майбутньому. Побачити https://github.com/dotcloud/docker/issues/404 для нещодавньої дискусії на цю тему.


73
2018-06-25 21:33



Хлопці, я випустив експериментальний бродячий провайдер для докерівника: github.com/fgrehm/docker-provider. - fgrehm
Докер не є віртуалізацією, але запускає ОС всередині власного контейнера, використовуючи той самий ядро ​​хосту, його не постачальник, як і інші віртуальні машини, тому docker вже підтримується Vagrant. - Aftab Naveed
Докер - це віртуалізація самої ОС, що неявно повторно використовує основне апаратне забезпечення. Це віртуалізація, коли вона абстрагує та ізолює файлову систему, мережеві процеси та процеси, що працюють в контейнері. - jose.angel.jimenez


Вони дуже допоміжні.

Я використовую комбінацію VirtualBox, Vagrant та Docker для всіх своїх проектів протягом кількох місяців і дуже сильно відчули наступні переваги.

У Vagrant ви можете повністю відмовитися від будь-якого шеф-повара, а все, що вам потрібне вашим бродячим файлом, - це підготувати машину, яка запускає один маленький сценарій оболонки, який встановлює докер. Це означає, що мої Vagrantfiles для кожного проекту майже ідентичні та дуже прості.

Ось типовий файл 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

Файл завантажувача, який встановлює докер, виглядає так

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

Тепер, щоб отримати всі послуги, які мені потрібно запустити, у мене є сценарій docker_start, який виглядає так, як це

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

У цьому прикладі я використовую MongoDB, Elastisearch, RabbitMQ і Memcached

Конфігурація шеф-кухаря без докерів була б значно складнішою.

Останній великий плюс накопичений, коли ви переходите на виробництво, перекладаючи середовище розробки в інфраструктуру хостів, які є однаковими в тому, що вони просто мають достатню конфігурацію для запуску docker, означає дуже мало роботи.

Якщо ви зацікавлені, у мене є більш детальна стаття про середовище розробки на моєму веб-сайті за адресою

Впровадження середовища розробки Vagrant / Docker


52
2017-08-20 20:42



Ви зробили все це орієнтування docker_start, але не потрудились об'єднати контейнери разом. Ви просто збираєтесь з жорсткими кодами номерів портів, тому що ви використовуєте його під Vagrant? - WineSoaked
Привіт WineSoaked, у прикладі вище не відображається контейнер, який фактично використовує всі ці послуги. Якщо ви дивитеся на згаданий запис до блогу, є інший скрипт сценарію / vagrant / docker_web, який запускає контейнер розробки для проекту. Це дійсно використовує -link на команді docker run, а проект Rails використовує змінні середовища, що вводиться докеру, для підключення до служб. - Mark Stratmann
Я бачу потенціал злиття обох продуктів. Бродяга як тестування на навколишнє середовище та докер для обкладинки додатків. Злиття ви можете випробувати окреме додаток або тест на множину есценарій. Я думаю, що багато "служб тестування платформ" використовують Vagrant + Docker в той час. - erm3nda
"Вони дуже приємні". - Обидва цілком можуть вільно користуватися. - Underyx
Привіт @koppor Я останнім часом використовував докер-пристрій близько трьох місяців тому і ще не повернувся до нього. Проблема у мене полягала в тому, що у мене є помилка при спільному використанні папок від мого хоста MAC до віртуального комп'ютера, що працює під керуванням docker при використанні драйвера VMWare. Це означало, що я не міг редагувати код локально на Mac і внести зміни, відображені в контейнері докерів. Я не знаю, чи вони ще їх виправили, коли вони дійсно перейдуть на це. Однак я змінив весь мої контейнерні оркестровки, щоб створити докер після написання цієї відповіді - Mark Stratmann


Vagrant-lxc це плагін для Vagrant, який дозволить вам використовувати LXC для забезпечення Vagrant. Вона не має всіх функцій, які використовується за замовчуванням Vagrant VM (VirtualBox), але вона повинна надавати вам більшу гнучкість, ніж докер-контейнер. У посиланні є відео, яке показує свої можливості, які варто переглянути.


48
2017-08-01 18:44



І ось пряма посилання на проект github.com/fgrehm/vagrant-lxc - gertas


За допомогою Vagrant тепер ви можете мати Docker як постачальника послуг. http://docs.vagrantup.com/v2/docker/. Докер-провайдер може бути використаний замість VirtualBox або VMware.

Зверніть увагу, що ви також можете скористатися Docker для надання послуг з Vagrant. Це дуже відрізняється від використання Docker як постачальника. http://docs.vagrantup.com/v2/provisioning/docker.html

Це означає, що ви можете замінити Шеф-кухар або Кукольник з Докером. Ви можете використовувати такі комбінації, як Docker як постачальник (VM) з шеф-поваром як постачальник. Або ви можете використовувати VirtualBox як постачальника і Docker в якості постачальника.


41
2018-05-30 16:10



світ просто зійшов з розуму;) ми можемо запустити бродягу, використовуючи докер-провайдер, щоб запустити докер-контейнери в бродяжнику - Hoto
@ zainengineer, чи Docker-провайдер для Vagrant в Windows все ще використовує boot2docker або ж він використовує деякий варіант Docker Toolbox? - Derek Mahar
@ zainengineer Чи є у вас посилання на ілюстративні приклади (не брудні документи)? - Tset Noitamotua


Використання обидва є важливою частиною тестування доставки додатків. Я лише починаю займатися Docker і дуже серйозно замислююся над командою із застосуванням, яка має жахливу складність у створенні та постачанні свого програмного забезпечення. Подумайте про класичну ситуацію з проектом Phoenix / Continuous Delivery.

Мислення виглядає так:

  • Візьміть компонент програми Java / Go і створіть його як контейнер (зверніть увагу, не впевнені, що додаток має бути побудований у контейнері або тоді побудований встановлена ​​в контейнер)
  • Доставте контейнер до Vagrant VM.
  • Повторіть це для всіх компонентів програми.
  • Ітерація на компонент (ів) для кодування проти.
  • Постійно перевіряйте механізм доставки на VM (и), якими керує Vagrant
  • Сон добре знає, коли настав час розгортати контейнер, ці інтеграційні випробування відбувалися на набагато більш тривалій основі, ніж це було до Docker.

Це, здається, є логічним продовженням твердження Мітчелла про те, що Вагрант для розвитку в поєднанні з Фарлі / Хамблс мислення в безперервній доставці. Якщо я, як розробник, може скоротити цикл зворотного зв'язку за темами інтеграції та доставкою додатків, тоді буде досягнута висока якість та кращі робочі середовища.

Той факт, що я, як розробник, постійно і послідовно доставляю контейнери до віртуальної машини і тестування програми більш цілісно означає, що випуски виробництва будуть ще більше спрощені.

Таким чином, я бачу, що Vagrant розвивається як спосіб залучення деяких з приголомшливих наслідків, які Docker матиме для розгортання додатків.


11
2018-06-20 00:56



Ви на будь-який шанс має повідомлення в блозі про це? його було майже два роки, як його відбувається? як і раніше, використовуючи бродягу з докерів або просто докерів і докер-флеш / машину? - Hoto
Компанія, якою я працювала, була придбана, і вони зняли весь вміст @Hoto. Коротка відповідь: я використовую докер-прилад для домашніх проектів. На роботі я працюю <gulp> менеджером </ gulp> і не роблю багато технологій. У нас немає планів щодо використання Docker, тому наш інструмент, як правило, Vagrant. - Boyd Hemphill


У фактичному журналі Oracle Java є дійсно інформативна стаття про використання Docker у поєднанні з Vagrant (і Puppet):

Висновок

Легкі контейнери Docker швидше в порівнянні з класичними віртуальними машинами   і стали популярними серед розробників і в рамках CD і DevOps   ініціативи. Якщо ваша мета - це ізоляція, Docker - відмінний вибір.   Vagrant - це менеджер віртуальної машини, що дозволяє вам конфігурувати скрипт   індивідуальних віртуальних машин, а також робити резервування. Втім, це підвіконня a   VM залежить від VirtualBox (або іншого VM-менеджера) з відносно   великі накладні витрати Це вимагає, щоб у вас був працездатність жорсткого диска   величезний, він потребує багато оперативної пам'яті, а продуктивність може бути суто оптимальною. Докер   використовує сегменти ядра та ізоляцію імен через LXC. Це означає що   ви використовуєте одне і те ж ядро ​​як хост і таку ж систему ile.   Бродяга є рівнем над Докером з точки зору абстракції, тому вони є   не дуже порівнянний. Інструменти управління конфігурацією, такі як "Лялька"   широко використовується для забезпечення цільових середовищ. Повторне використання існуючих   Docker - це легкі рішення на основі кулінарії. Ви також можете нарізати свій   рішення, тому інфраструктура забезпечується Puppet; в   проміжне програмне забезпечення, сама бізнес-програма або обидва варіанти   з Докером; і Docker загорнуто Vagrant. З цим діапазоном   інструменти, ви можете зробити те, що найкраще для вашого сценарію.

Як побудувати, використовувати та організувати Docker контейнери в DevOps http://www.javamagazine.mozaicreader.com/JulyAug2015#&pageSet=34&page=0


5
2017-08-20 13:04



А у випадку, якщо ви не бажаєте заповнювати дурну й довгу форму, і у вас є пристрій iOS, завантажте додаток та проблему за допомогою декількох відтінків: itunes.apple.com/app/java-magazine/id530494326?mt=8 - Rafael Bugajewski
Багато чого не було - Paul Verest