Задать вопрос
Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (7)

Лучшие ответы пользователя

Все ответы (6)
  • О Docker или отличие от виртуальной машины и немного о Vagrant...?

    @bamaz
    Хотелось бы узнать в чем различие между Virtualbox(VMware) и Docker?


    Docker - строгая изоляция ресурсов внутри операционной системы Linux.
    Не более того. То есть бинарный файл запускается в той же ОС, но не имеет доступа за пределы выделенной ему клетки. Программа (одна-единственная вообще говоря в Докер предполагается программа) может иметь свои-собственные зависимости, более того, допускается использование совсем другой версии Linux внутри Докер-контейнера.

    Но это не виртуализация. Точнее можно назвать это изоляцией от окружения (настроек) операционной системы. Смысл Докера именно в этом - чтобы можно было запусить программу почти где угодно, не настраивая ее под другую ОС (не устанавливая библиотек, не прописывая путей, портов, не создавая настроечных файлов по возможности и пр.).

    Это делается на уровне API ОС, следовательно, довольно не накладно по производительности. Правда, при неграмотном использовании (когда в качестве предков в образе используются разные образы) накладно по расходу дискового пространства.

    В частности Docker умеет запускать только Linux из под Linux, причем не какие угодно версии годятся, в контейнере Докера может быть только специально подготовленная (облегченная). В других OC - Windows, MacOSX - Докер реализован как полноценная виртуальная машина с Линуксом, следовательно, жрет ресурсов много.

    VirtualBox - это настоящая виртуальная машина, то есть внутри может быть действительно совершенно другая ОС. Не только Linux. Полная изоляция вплоть до эмуляции аппаратных портов-ввода вывода. Изоляция более строгая. Но требует намного больше ресурсов.

    Запуск виртуальной машины сопряжен со значительными затратами времени. Лучшие виртуальные машины откусывают не менее 15% производительности....

    Запуск программы в Docker - сопоставим с запуском обычного бинарного файла внутри обычного операционного окружения (если уж быть точным - то чуть больше, но незначительно).

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

    А вот запустить на том же железе хотя бы несколько полноценных виртуальных машин вряд ли получится.

    Если я правильно понимаю, я могу и там и там поднять любую ОС, к примеру ту же Ubuntu и LAMP.


    Внутри Докера - далеко не любую. Выбор ограничен считаным числом специально подготовленных дистрибутивов Линукса.

    Внутри Virtual Box - действительно любую.

    Только разница в том что к Docker я буду иметь доступ сразу же из bash, а к VB через её окно или ssh,


    То, что вы хотите и через Virtual Box легко реализуется с помощью инструмента Vagrant. Будет иллюзия, что вы в Докере работаете.


    плюс если я выйду то в виртуалке все сохранится, а в Docker без коммита все умрет? Или есть другие важные отличия...?


    То, что вы имеете ввиду - можно сделать и внутри полной виртуалки - отключить персистентное сохранение на диски.
    То, о чем вы пишете - это просто концепция стейтлесс-контейнеров. То есть внутри все настроено раз и навсегда. Все изменения контейнер Докера должен делать только на смапированных внешних девайсах. Это гарантирует постоянство внешней среды для программы внутри Докер-контейнера. Крайне важно для повторяемости в продакшене. Чтобы не пришлось в 3 ночи просыпаться и искать отчего ваш сайт с миллионой посещаемостью перестал работать. Ах это потому что какая то софтина не имеющая отношения к вашей программе обновилась и потянула за собой библиотеку, не соместимую по версией с тем, что вы используйте.

    Пишут что Docker активно применяется при программировании и переносе workstations. Тоесть имеется ввиду, я могу работать с кодом прямо в docker image, после коммитить, пушить, а затем все это запускать на сервере без установки зависимостей?


    Нет.
    Концепция повторяемости такова.
    Вы программируете и дизайнере и верстаете как обычно.
    Результат своей работы вы помещаете в контейнер - отлаживаете в контейнере.
    На сервере используется тот же контейнер.
    Это гарантирует какую-то повторяемость условий при которых велась отладка и при которых будет работать все в продакшне.

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

    Vagrant, насколько я понимаю активно применяется при создании images и конфигурировании их же?


    При разработке - да.
    Так как ты можешь работать в несовместимой с docker средой (например, в Windows) и отладка возможна только через виртуальную машину.

    В продакшене - нет. Так как слишком большие накладные расходы на виртуальную машину.

    И последнее, могу ли я:
    Запустить image в Linux, сделать правки в коде (кстати как это сделать, к примеру в том же *storm, Sublime. ... ) и закоммитить.
    После войти в Windows, запустить image и там продолжить разработку?


    Думаю да,
    но это не то, для чего создавался Докер.

    А написание кода внутри виртуальной машины - возможно. Я сам так делаю.
    Ответ написан
    Комментировать
  • Кто понял docker?

    @bamaz
    Вы путаете задачи.
    Деплой удобный - это не Докер.

    Дело Докера - сэмулировать окружение операционной системы, чтобы моя программа могла запускаться где угодно. И все. Плюс удобное API.

    Мы вот сейчас используем Yandex Cocaine. Хорошая вещь. Но безпроблемно компилируется только на Ubutnu 14.04. Поэтому мы его просто запускаем в Docker.

    А сам Яндекс Кокаин уже умеет запускать нужные нам приложения ))) Вот такая змея, кусающая себя за хвост, получается. )))

    То есть Докер решает одну из задач Деплоя - воспроизводимость операционного окружения запускаемой программы (не забывайте, что маппирование портов и дисков все же остается снаружи). При этом оно кушает немножко лишнего дискового места (хотя при использании всех образов с единым предком - не так уж и много).

    Запускается довольно быстро.

    То, о чем вы пишете - удобная и воспроизводимая настройка - это к инструментам типа Puppet, Ansible, Chief, Salt.

    Будут ли они при этом использовать Докер или нет - другой вопрос. Скорее, да, будут использовать - для упрощения.

    Но в вашем случае можно и без Докер - держать на сервере 3 версии PHP в разных каталогах. И выбор той или иной версии настраивать через fastcgi (или что там у вас используется). Докер для этого не нужен.

    docker-compose - это всего лишь утилита для оркестрации, которая позволяет запустить то, что записано в конфигурационном файле.

    Наш Яндекс-Кокаин даже более комплексное средство оркестрации с дополнительными возможностями - пользоляет использовать Докер, а также содержит в одном флаконе и средства мониторинга, логгирования, распределения нагрузки по кластеру и пр. и пр. Но вещь весьма специфичная.

    Поэтому я бы обратил ваше внимание для оркестрации Докер-контейнеров на продукты HashiCorp, Kubernetes, Mesos.
    Ответ написан
    Комментировать
  • Для создания небольшого обучающего портала лучше использовать какую-то CMS или фреймворк или быстрее написать с нуля?

    @bamaz
    Если вы задаете такой вопрос - то вам дорога в сторону готовых (полуготовых - CMS) решений.
    Ответ написан
    Комментировать