Доцкер Цомпосе - Меморијска ограничења

Docker Compose Memory Limits



Доцкер Цомпосе је моћан услужни програм. То штеди време и смањује грешке при примени ваше Доцкеризед апликације. Обично није добра идеја покренути читав стек, укључујући интерфејс, сервер базе података итд. Из једног контејнера.

Развијамо различите контејнере за руковање различитим радним оптерећењима апликације и користимо Доцкер Цомпосе за то лако. Свако логички различито радно оптерећење наведено је као другачије услуга . На пример, ваш фронтенд хттп сервер ће бити наведен као фронтенд услуга која покреће Апацхе или Нгинк слику као контејнер.







Све услуге, њихове потребе за умрежавањем, захтеви за складиштењем итд. Могу се навести у датотеци доцкер-цомпосе.имл. Овде ћемо се фокусирати на спецификацију употребе меморије.



Да бисте их пратили, биће вам потребни следећи алати у вашем арсеналу:



  1. Основно разумевање Доцкера
  2. Доцкер за Виндовс или Мац или ако користите Линук, ДоцкерЦЕ за Линук
  3. Доцкер Састави бинар и (Корисници Виндовс -а и Мац -а ће ово већ имати инсталирано)

Ми ћемо се држати верзије 2.4 за наше датотеке доцкер-цомпосе.имл јер подржава верзију 17.12 и новију верзију Доцкер Енгине-а и новију. Могли смо да користимо новију верзију 3, али не подржава стару синтаксу ограничења меморије. Ако покушате да користите новију синтаксу, она инсистира на томе да уместо тога користите Доцкер у режиму Сварм. Да би ствар била једноставна за редовне кориснике Доцкера, држаћу се верзије 2.4





Већина кода би радила исто за верзију 3, а где ће бити разлике, поменућу новију синтаксу за кориснике Доцкер Сварма.

Пример апликације

Покушајмо да покренемо једноставну Нгинк услугу на порту 80 користећи прво ЦЛИ, а затим једноставан доцкер-цомпосе.имл. У следећем одељку ћемо истражити ограничења и употребу меморије и изменити наш доцкер-цомпосе.имл да видимо како се намећу прилагођена ограничења.



Покренимо једноставан нгинк сервер користећи Доцкер-ЦЛИ:

$ доцкер рун -д --наме ми -нгинк -п80:80нгинк: најновији

Можете видети да нгинк сервер ради тако што ћете посетити хттп: // лоцалхост или замените лцоалхост

Са ИП адресом вашег Доцкер хоста. Овај контејнер може потенцијално искористити сву расположиву меморију на вашем Доцкер хосту (у нашем случају то је око 2 ГБ). За проверу искоришћености меморије, између осталог, можемо користити наредбу:

$ доцкер статистика ми-нгинк

ИД КОНТЕЈНЕРА ЦПУ % МЕМ УСАГЕ/ЛИМИТ МЕМ % НЕТ И/О БЛОЦК И/О ПИДС
6еб0091ц0цф2 ми-нгинк0.00%2.133МиБ / 1.934ГиБ0.11% 3,14 кБ / 2,13 кБ 0Б / 0Б2

КОРИШТЕЊЕ/ОГРАНИЧЕЊЕ МЕМ -а је на 2.133МиБ од укупно 1.934ГиБ. Уклонимо овај контејнер и почнимо писати скрипте за састављање докумената.

$ доцкер заустави мој-нгинк
$ доцкер рм мој-нгинк

Еквивалентна им датотека

Тачан контејнер као горе може се креирати ако следимо ове кораке:

$ мкдир мој-компонуј
$ цд ми-цомпосе
$ вим доцкер-цомпосе.имл

Креирамо нови празан директоријум и у њему креирамо датотеку доцкер-цомпосе.имл. Када покренемо доцкер-цомпосе из овог директоријума, он ће тражити ову одређену датотеку (занемарујући све остало) и према томе креирати нашу имплементацију. Додајте следећи садржај у ову .имл датотеку.

верзија:'3'
услуге:
мој-нгинк:
слика: нгинк: најновије
портови:
-'80: 80 '

$ доцкер -цомпосе уп -д

-Д заставица се додаје тако да новонастали контејнери раде у позадини. У супротном, терминал ће се причврстити на контејнере и почети штампати извештаје са њега. Сада можемо видети статистику новонасталих контејнера (ова):

$ доцкер статс -алл

ИД КОНТЕЈНЕРА ЦПУ% МЕМ УСАГЕ/ЛИМИТ МЕМ% НЕТ И/О БЛОЦК И/О ПИДС
5ф8а1е2ц08ац ми-цомпосе_ми-нгинк_10.00% 2.25МиБ/1.934ГиБ0.11% 1.65кБ/0Б 7.35МБ/0Б2

Приметићете да је сличан контејнер направљен са сличним ограничењима меморије, па чак и употребом. Из истог директоријума који садржи датотеку имл. Покрените следећу команду да бисте избрисали новостворени контејнер, заједно са креираном мрежом корисничког моста.

$доцкер-саставити доле

Ово ће вратити доцкер у чисто стање, са изузетком свих волумена који су створени (нисмо креирали ниједан, па то није брига.)

Ограничења меморије и резервације меморије

Ограничења меморије и резервације меморије два су различита аспекта који обезбеђују несметано функционисање ваших апликација и Доцкер хоста на коме радите.

Уопштено говорећи, Меморијско ограничење намеће горњу границу количине меморије коју потенцијално може користити Доцкер контејнер. Подразумевано, Доцкер контејнер, као и сваки други системски процес, може да користи целу расположиву меморију Доцкер хоста. Ово може узроковати изузетке недостатка меморије и ваш систем би се могао срушити. Чак и ако до тога никада не дође, и даље може изгладњивати друге процесе (укључујући и друге контејнере) из вредних ресурса, што опет може наштетити перформансама. Ограничења меморије осигуравају да контејнери гладни ресурса не пређу одређену границу. Ово ограничава радијус експлозије лоше написане апликације на неколико контејнера, а не на цео хост.

Резерве меморије, с друге стране, мање су ригидне. Када систему понестаје меморије и покушава да поврати део меморије. Покушава да доведе потрошњу меморије у контејнер на или испод границе резервације. Међутим, ако постоји обиље меморије, апликација се може проширити до чврсто постављеног ограничења меморије.

Да резимирамо:

  1. Ограничење меморије: Строга горња граница количине меморије која је доступна контејнеру.
  2. Резерва меморије: Ово би требало поставити као најмању количину меморије која је потребна апликацији за правилно покретање. Дакле, не руши се или се лоше понаша када систем покушава да поврати део меморије.

Ако је резервација меморије већа од ограничења меморије, ограничење меморије има предност.

Одређивање меморијских ограничења и резервације

Верзија 2

Вратимо се на доцкер-цомпосе.имл који смо написали раније и додајмо му ограничење меморије. Промените верзију на 2.4 из разлога описаних у одељку о предусловима.

верзија:'2.4'
услуге:
мој-нгинк:
слика: нгинк: најновије
портови:
-'80: 80 '
мем_лимит: 300м

Последњи ред поставља ограничење за услугу ми-нгинк на 300 МБ. Можете користити к за КиБ, а г за ГиБ и б за само бајтове. Међутим, број испред њега мора бити цео број. Не можете да користите вредности попут 2,4 м, уместо тога бисте морали да користите 2400к. Сада ако покренете:

$ доцкер стат -све

ИД КОНТЕЈНЕРА ЦПУ % МЕМ УСАГЕ/ЛИМИТ МЕМ % НЕТ И/О БЛОЦК И/О ПИДС
44114д785д0а ми-цомпосе_ми-нгинк_10.00% 2.141МиБ/300МиБ0,71% 1.16кБ/0Б 0Б/0Б2

Приметићете да је ограничење меморије постављено на 300 МиБ. Постављање резервације меморије је подједнако једноставно, само додајте ред мем_ресерватион: ккк на крају.

верзија:'2.4'
услуге:
мој-нгинк:
слика: нгинк: најновије
портови:
-'80: 80 '
мем_лимит: 300м
мем_резервација: 100м

Верзија 3 (опционално)

Да бисте користили трећу верзију, морате да покренете Доцкер у режиму роја. За Виндовс и Мац можете га омогућити помоћу менија поставки Доцкер. Корисници Линука би морали да покрену доцкер сварм инит. Више информација о томе се може пронаћи овде . То ипак није неопходан корак, а ако то нисте омогућили, и то је у реду. Овај одељак је за људе већ ради у режиму роја и може да користи новију верзију.

верзија:'3'
услуге:
мој-нгинк:
слика: нгинк: најновије
портови:
-'80: 80 '
развити:
ресурси:
ограничења:
меморија: 300м
резервације:
меморија: 100м

Све ово дефинишемо под опцијом ресурса. Ограничења и резервације постају њихови примарни кључеви, а меморија је само један од многих ресурса којима се овде управља. ЦПУ је још један важан параметар.

Додатне информације

Више о доцкер-цомпосе-у можете сазнати из званичне документације овде повезано . Када схватите суштину како написати датотеку за састављање, документација вам може помоћи са специфичностима различитих параметара.

Не морате све знати, само потражите оно што ваша апликација захтева и референца ће вас водити у имплементацији тога.