а сколько времени нужно, чтобы приготовить контейнеры?
Если имеете в виду процесс билда docker build
— то непосредственно время выполнения указанных операций (и которых нет в кеше) в Dockerfile + относительно небольшой оверхед на поднятие контейнеров во время билда
Если же имеете в виду запуск контейнера docker run
, то при наличие всех слоев на машине время запуска сравнимо c запуском непосредственно самого решения вне контейнера. Если всех слоев нет — то к этому времени добавляется загрузка недостающих слоев из докер-репозитория.
одного конкретного ресурса — RAM (и сугубо в случае с микросервисами
По сравнению с виртуалками — по всем ресурсам выигрышь на стороне контейнера (за исключением небольшой потери изоляции, которую сервисы бизнес-логики не заметят). RAM, дисковое пространство, CPU наверное в меньшей степени (хотя если сравнивать старт VM со стартом контейнера...)
а вот при локальном хранении контейнеров (на хосте) — расход дискового пространства сумасшедший
Вот тут не совсем понял что с чем сравнивается... если хранить локально такое же количество виртуальных машин будет меньше расход дискового пространства?
Если имеете в виду оставшиеся закешированные образы и выключенные контейнеры — то при наличие оркестратора контейнеров подчищать лишнее будет его обязаностью.
Более полный ответ:
по сравнению с развертыванием напрямую на хост-машине — у контейнеров профит в изоляции (каждый контейнер живет в своем мире, не зная про соседей), повторяемости (всегда _почти_ одинаковая среда независимо от хоста) и универсальности (решение позволяет разворачивать однообразно самые различные сервисы).
по сравнению с развертыванием в виртуальных машинах — значительно более быстрое развертывание и значительная экономия ресурсов
Боюсь эта переписка уходит в не конструктивную плоскость. Все же, постараюсь ответить на ваши вопросы:
Тот же человек, который бы писал любой другой скрипт по упаковке решения в артефакт для деплоймента. В одних компаниях это девопс, в других — девелопер, в третьих — человек-сорокоручка. В статье описывается, что время билда образа может значительно ускоряться за счет кеширования слоев. И сравнение с cookbook не совсем корректно, поскольку Dockerfile выполняется в момент подготовки артефакта, а не развертывания
Это так же описано в статье, смотрите пример с Redis. Конечно, если у вас есть, скажем, требования PCI DSS, то надо будет отдельно прорабатывать защиту соответствующих микросервисов. Но если утрировать до «потери бизнеса» — то тогда и VM не являются полноценной изоляцией, как показал Meltdown и Spectre.
При этом вы не привели опровергающих фактов :). Как я и упоминал, всегда надо понимать преимущества и недостатки технологий. Негативные стороны VM по сравнению с контейнерами — потребление ресурсов: размер виртуалки, RAM, время старта. По CPU у виртуалок оверхед минимальный, но если придираться — то преимущество в пару процентов на стороне контейнеров. Из преимуществ VM — более стабильное/отточенное решение, привычное для бизнеса.
Если говорить о производительности — есть немного устаревшая статья (2014 год) по сравнению KVM с Docker domino.research.ibm.com/...0681E7B/$File/rc25482.pdf. Вывод, который они сделали: