Поскольку мы ща тестируем наше дизастер рекавери, у меня куча времени побалаболить...Vims писал(а): а можно хай левел функциональности докера. для чайников
Сначала лирическое отступление.
Бурное развитие ИТ вызвало немеряную потребность в программистах (и рост из зарплат) - разумеется, это вызвало большой поток жаждущих хороших зарплат в программирование. Но все пошло не так. Точнее, все пошло так - именно так, как определяет нормальное распределение, а именно: хороших программистов очень мало, а большинство в состоянии лишь посредственно освоить основы. В результате индустрия получила огромное количество "недопрограммеров", которые в состоянии написать некий код (ин дженерал - на ПХП), но которые совсем не в состоянии написать код, чтобы он не жрал всю память или ЦПУ - личный опыт поддержки зашаренного хостинга. На таких хостингах сидят миллионы вебсайтов. Казалось бы, клауд решил эту проблему - можно арендовать масенький инстанс, но горе-программеры не в состоянии установить и сконфигурить ЛАМП. И умная часть человечества решила придумать хрень, которая бы решала эти проблемы - и назвали это дело контейнерами. Докер - один из видов контейнеров, есть и другие - сейчас задача ввести некую стандартизацию ибо народ реально боится зоопарка...
Конец лирического отступления.
Технически контейнеры (докер - самый известный и массовый представитель семейства) - это шаринг ресурсов операционной системы (одной) в отличие от виртуальной машины, которая шаринг хардваре ресурсов - ВМ еще называют тяжелым шарингом, контейнеры - легким шарингом - технически контейнер заворачивает процесс или группу процессов в обертку и изолирует его/их от остальных процессов на той же операционной системе. Разница очевидна - можно запустить ВМы с виндами и линуксом на одном хосте одновременно, а вот контейнеры - низзя. Зато контейнеров можно запустить намнооооого больше и быстрее.
Бенефиты функциональности докера для чайников:
1. докеровкая компашка поддерживает паблик репу с готовыми имиджами. Например, загрузка и запуск ЛАМП контейнера с Джумлой или Вордпрессом займет не более 5 минут, далее любой выпускник БСИТ ляхко напихает туда кастом модулей и картинок и отправит это в Интернет - сайт готофф (с) - 1.5 визитора в день выдержит и не убьет ничего на хостинге
2. Апдейты софта становятся намного проще и со всеми проблемами имеет дело создатель имиджа.
3. Если запускать многа контейнеров, то экономится дисковое пространство.
Дело в том, что собственно контейнер - это писабельный слой поверх имиджа, т.е. запуская 10 контейнеров одного имиджа, ты создаешь только 10 писабельных слоев - по одному на каждый контейнер, но не копируешь 10 раз сам имидж - имидж остается общим.
Как это имидж - общий? А так - он рид-онли!
Почему "слой"? Докер вводит новую абстракцию - сторадж. Оно работает между читальником/писальником контейнера и читальником/писальником ОС.
Данные в сторадже содержатся послойно. Слой - это некоторый набор файлов (мы же помним, что всё - это файлы?). Слои записываются в сторадж в момент билда имиджа или загружаются из докеровской репы (паблик или приват), их содержание определяется т.н. Dockerfile - собссно декларация того, что должно быть в имидже. Имидж - это упорядоченный набор слоев из стораджа.
Вся эта хрень работает весьма непросто - вот упрощенная! схема
Допустим, тебе надо создать 3 имиджа:
А. Убунта (для определенности) + ПХП + Wordpress
Б. Убунта + ПХП + Joomla
В. Убунта + node.js
В сторадж будут записаны 5 слоев ( а вовсе не 8 ): 1. слой Убунта, 2. слой ПХП, 3. слой WordPress, 4. слой Joomla, 5. слой node.js
Контейнер на базе Имидж-А будет работать со слоями 1, 2, 3.
Контейнер на базе Имидж-Б будет работать со слоями 1, 2, 4.
Контейнер на базе Имидж-В будет работать со слоями 1, 5.
Как контейнер будет обращаться к файлам из имиджа (собссно писабельный слой - пустой!) - читальник последовательно запрашивает слои имиджа в поисках нужного файла, и если файл найден - он тебе выдается и кэшируется в контейнере. Если ты изменил файл - он записывается в контейнер.
4. Если правильно специфицировать параметры запуска контейнера - приложение в контейнере не захватит всю память или ЦПУ. Алсо, если кто-то хакнет приложение, у хакера не будет доступа ко всему хосту.
Ну, в общем это фсе (для чайников). Есть еще бенефиты не для чайников, но это отдельное темо.