2016-06-18 3 views
4

Хорошо, это сводит меня с ума. Я много читал о Docker и до сих пор не могу понять - это докер для меня ...Могу ли я использовать докер для изоляции среды разработки?

Я использую Mac OS X для работы и бродяг для запуска виртуальной машины с разработкой Ubuntu. Я использую vagrant для каждого проекта, потому что я хочу иметь те же ОС и библиотеки, что и на производственных серверах. Я ненавижу инструменты, такие как rbenv и nvm, потому что их использование увеличивает время запуска терминала. Если оба активированы, мне нужно подождать 2..4 сек, чтобы новая вкладка терминала была готова. Я печатаю быстро, и это задерживает мою производительность.

Я в порядке с бродягой, но с использованием виртуального бокса, для которого требуется ~ 800 мб оперативной памяти для каждой виртуальной машины ... ее слишком много.

Так что вопрос: могу ли я использовать докер таким же образом, как бродяга? Скажем, у меня есть два проекта, и мне нужно использовать Ruby 2.0 для проекта A и Ruby 2.3 для проекта B, возможно ли/правильно использовать докер для создания двух контейнеров со своей собственной версией Ruby? И я не хочу, чтобы эти версии Ruby пересекались с системой Ruby.

С бродягой я просто создаю две виртуальные машины с Ruby 2.0, а второй с Ruby 2.3. Если мне не нужен какой-либо из них, я уничтожу VM, и моя система останется ясной без программного обеспечения, установленного на гостевой машине.

Отредактировано: Я знаю, что я не могу использовать Docker изначально с OS X. Предположим, что Linux Ubuntu/Debian/Arch/etc. Я готов перейти на Linux, если я буду знать, что Linux + Docker даст мне то, что я хочу.

+1

Возможный дубликат [Должен ли я использовать Vagrant или Docker для создания изолированной среды?] (Http://stackoverflow.com/questions/16647069/should-i-use-vagrant-or-docker-for-creating-an -изолированная среда) – BMitch

ответ

5

Вы можете использовать Docker в Mac OS X с использованием новой Docker бета для Mac OS X. Он по-прежнему использует виртуальную машину, но это легче, чем VirtualBox. Кроме того, он поддерживает лучшую интеграцию с OS X. На данный момент он немного глючит.

Чтобы ответить на ваш вопрос, да, вы можете создать свою среду с требуемой средой выполнения внутри контейнера докера, не затрагивая другие контейнеры или систему. Имейте в виду, что контейнер обычно запускает один процесс внутри него, поэтому не ожидайте запуска нескольких служб, например, в коробке с бродягой. Это не целая ОС, а просто исполняемый файл, запущенный в другом пространстве имен ядер. Если вы хотите запускать несколько процессов, есть обходные пути, но «правильный» способ сделать это - использовать несколько контейнеров, связанных друг с другом, используя что-то вроде docker-compose.

+0

Спасибо. Это ценная информация. –

3

Да, вы можете абсолютно создать два разных контейнера Docker, каждый из которых запускает разные версии Ruby, которые не влияют на то, что ваша хост-машина вообще установила.

При создании файла Docker вы указываете базовое изображение для расширения. Например:

FROM ruby:2.3-onbuild 

The Ruby Официальный Docker Изображения только вернуться к 2.1, но пусть это не остановит вас. Взгляните на 2.3 Dockerfile, перепишите свой собственный, но установите более старую версию Ruby, все готово. На самом деле так просто создавать индивидуальные изображения Docker любого типа.

Источники:

Ruby Official Docker Image

Смежные вопросы