docker guru ищется

Все, что вы хотели знать о программизме, но боялись спросить.
Аватара пользователя
Stanislav
Mr. Minority Report
Сообщения: 43378
Зарегистрирован: 19 окт 2005, 16:33
Откуда: Moscow - Richmond - New Wesт - Burnaby

Re: docker guru ищется

Сообщение Stanislav »

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

Ну, в общем это фсе (для чайников). Есть еще бенефиты не для чайников, но это отдельное темо. :D
Последний раз редактировалось Stanislav 18 мар 2018, 11:05, всего редактировалось 2 раза.
Аватара пользователя
Stanislav
Mr. Minority Report
Сообщения: 43378
Зарегистрирован: 19 окт 2005, 16:33
Откуда: Moscow - Richmond - New Wesт - Burnaby

Re: docker guru ищется

Сообщение Stanislav »

borei писал(а): Я говорил что шелл не обязателен, а нужен он или не нужен зависит от задачи.
ОК, это спор из разряда - недостижимо, значит нецелесообразно :roll:
borei писал(а):
По поводу того остаются ли данные после стопа старта я сегодня проверю - чего гадать то.
Зачем пробовать? Неужели ни разу докер-хост не ребутили? :roll:
borei
Маньяк
Сообщения: 4865
Зарегистрирован: 18 авг 2008, 14:51

Re: docker guru ищется

Сообщение borei »

Stanislav писал(а):
borei писал(а): Я говорил что шелл не обязателен, а нужен он или не нужен зависит от задачи.
ОК, это спор из разряда - недостижимо, значит нецелесообразно :roll:
borei писал(а):
По поводу того остаются ли данные после стопа старта я сегодня проверю - чего гадать то.
Зачем пробовать? Неужели ни разу докер-хост не ребутили? :roll:
вот на предмет reboot - интересный вопрос, не припомню что мы его перегружали.
Аватара пользователя
Vims
Northern Yeti
Сообщения: 21307
Зарегистрирован: 17 фев 2003, 15:53
Откуда: Magadan - Vancouver
Контактная информация:

Re: docker guru ищется

Сообщение Vims »

Stanislav писал(а):
Vims писал(а): а можно хай левел функциональности докера. для чайников
Поскольку мы ща тестируем наше дизастер рекавери, у меня куча времени побалаболить...
Сначала лирическое отступление.
СПСБ Стас... :lol: :beer:
winamp
Зритель
Сообщения: 9
Зарегистрирован: 04 май 2012, 02:17

Re: docker guru ищется

Сообщение winamp »

Stanislav писал(а):
winamp писал(а):
Stanislav писал(а): А можно в "фром скратче" написать?
RUN for i in `seq 1 10`; do touch /filename$i; done
написать-то можно, только он с ошибкой выпадет. RUN с аргументом в виде строки выполняется через sh, которого в базовом образе нет.
Borei, так нужен шелл или не нужен? :roll:
winamp писал(а):
Stanislav писал(а): А если контейнер останавливается и снова стартует? :roll:
Смотря как он был создан. Если с аргументом --rm в docker run, то увы. Если без него - то данные останутся, да. Только практической ценности в этом нет:
1. Любая оверлейная файловая система заведомо медленней базовой.
2. Данные останутся прибитыми гвоздями к контейнеру, в котором, вероятно выполняется софтина. Захотите обновить софтину через докер - данные пропадут.
ИМХО вы тут что-то путаете :roll:
Как это нет практической ценности? А зачем тогда сделали команду docker start - которая запускает остановленный (docker stop) контейнер? Зачем тогда опция --restart в docker run?
1. и как это относится к ценности данных?
2. можно ведь и не прибивать гвоздями, а прокинуть вольюм?
Похоже, мы о разном. Вы говорите о практической ценности запуска и остановки контейнеров, а я - о целесообразности хранения рабочих данных внутри контейнера. Например, продакшн СУБД с файлами внутри контейнера хранить не стоит, только через вольюм. Данные при перезагрузке хоста никуда не денутся - будут в слое для изменений, но точно денутся в следующих случаях:
1. Если захочется обновить версию СУБД. docker pull && docker stop && docker rm && docker run - данные пропадут (если не прокинуты через вольюм)
2. Если разработчики докера решат переехать на другую copy on write fs, как это уже было при переходе с aufs на overlay2.
Аватара пользователя
Stanislav
Mr. Minority Report
Сообщения: 43378
Зарегистрирован: 19 окт 2005, 16:33
Откуда: Moscow - Richmond - New Wesт - Burnaby

Re: docker guru ищется

Сообщение Stanislav »

borei писал(а):
Stanislav писал(а):
borei писал(а): Я говорил что шелл не обязателен, а нужен он или не нужен зависит от задачи.
ОК, это спор из разряда - недостижимо, значит нецелесообразно :roll:
borei писал(а):
По поводу того остаются ли данные после стопа старта я сегодня проверю - чего гадать то.
Зачем пробовать? Неужели ни разу докер-хост не ребутили? :roll:
вот на предмет reboot - интересный вопрос, не припомню что мы его перегружали.
Я перегружал :-) Полет нормальный :-)
БТВ, на данный момент у меня нет претензий к разработчикам докера - они решают свои поставленные задачи, все что мне было нужно, они продумали и имплементировали. Да, у меня есть претензии к архитекторам, которые пытаются юзать докер там, где не нужно или юзать не так, как нужно, но это соффсем другая тема :D
Аватара пользователя
Stanislav
Mr. Minority Report
Сообщения: 43378
Зарегистрирован: 19 окт 2005, 16:33
Откуда: Moscow - Richmond - New Wesт - Burnaby

Re: docker guru ищется

Сообщение Stanislav »

winamp писал(а): Похоже, мы о разном. Вы говорите о практической ценности запуска и остановки контейнеров,
Ну да... мы с Бореем вроде с этого начинали, если мне RAM не изменяет :roll:
winamp писал(а): а я - о целесообразности хранения рабочих данных внутри контейнера.
+100500
Нееееее, ни за какие коврижки...
winamp писал(а): Например, продакшн СУБД с файлами внутри контейнера хранить не стоит, только через вольюм. Данные при перезагрузке хоста никуда не денутся - будут в слое для изменений, но точно денутся в следующих случаях:
1. Если захочется обновить версию СУБД. docker pull && docker stop && docker rm && docker run - данные пропадут (если не прокинуты через вольюм)
СУБД в контейнере??? Неееее, ни за какие коврижки. Ну разве девельскую базу, но только на девайс-маппере, никак не на оверлее2
ЁПСы дисковой подсистемы слишком дорого стоят, что их гробить в контейнере...
winamp писал(а): 2. Если разработчики докера решат переехать на другую copy on write fs, как это уже было при переходе с aufs на overlay2.
Ну... это сродни дизастеру... хотя дата, технически, не пропадет, но мигрировать ее - это будет животиком по асфальту. Вообще я уверен, что девайс-маппер будет всегда - я только его использую и другим рекомендую. :D сам кондишенс апплаед (с) Майки :roll:
Ответить