Всем привет!
Начал разбираться с Docker и возникло куча вопросов.
1. Я так понимаю, что Docker нечто вроде системы управления виртуальными машины, а контейнеры эти сами виртуальные машины.
Если так, то насколько будет страдать производительность при запуске приложения на чистой операционной системе или в докер контейнере?
Получается если будет запущено несколько контейнеров, в каждом из которых есть что-то общее(mysql, postgresql, apache), значит будет запущены несколько копий СУБД или веб-сервера. В придачу, каждый контейнер основывается на образе ОС, значит будет запущены несколько ОС(Возможно даже одинаковых) внутри другой ОС
Не повиснит ли вся система?
2. Есть ли смысл использовать докер на продакшене? Если не учитывать простоту развертывания.
3. Сейчас стоит задача настроить сервер с redmine + gitlab + возможно n-ое количество веб-приложений для проверки начальником перед выкладкой на продакшен.
Стоит ли это все установить вручную на чистую систему?
Или все таки установить, используя Docker? redmine в своем контейнере, gitlab в своем, остальное в одном или нескольких контейнерах.
Простота то понятна. Для всего этого уже есть свои образы. Но не будет ли это все тупить?
Посоветуйте статьи/документацию, написанную не для профи, с описанием работы докер. Желательно на русском.
1. Контейнер это не виртуальная машина, это способ изоляции приложения.
Производительность почти не меняется. Оверхэд едва заметен.
Да, запускается несколько копий. Конечно не стоит множить ресурсоемкие процессы. Но СУБД и веб-серверы не входят в их число. У меня, например, работают 5 постгресов на одном микросервере без проблем. Опять таки, это до тех пор, пока нагрузки несерьезны.
Образы ОС запущены не будут. Они нужны только чтобы обеспечить приложению среду исполнения. В памяти висят только процессы приложений (ну то что вы в докере запустили)
2. В продакшене основной смысл это упрощение запуска микросервисов на разнообразном парке оборудования. Для классических приложений профит только в развертывании.
3. Есть разница в потраченном времени на настройку как раз redmine, gitlab и еще нескольких сервисов, установленных на хосте, и процесс запуска того же добра в контейнерах. Как раз в случае нескольких сервисов на одной машине докер всё серьезно упрощает.
Все эти rvm, nvm, этого пакета не хватает, того, а тут разные версии. Добавить сюда еще организацию бекапа.
С контейнерами другая проблема - это их корректное обновление.