ВМ или Доцкер?

Како знате да ли вам треба Доцкер а не ВМ? Морате да одредите шта тачно желите да изолујете. Ако желите да изолујете систем са гарантованим наменским ресурсима и виртуелним хардвером, онда би избор требало да буде ВМ. Ако треба да изолујете покренуте апликације као засебне системске процесе, биће вам потребан Доцкер.

Дакле, која је разлика између Доцкер контејнера и ВМ-а?

Виртуелна машина (ВМ) је виртуелни рачунар са свим виртуелним уређајима и виртуелним хард диском на коме је инсталиран нови независни ОС заједно са драјверима виртуелних уређаја, управљањем меморијом и другим компонентама. То јест, добијамо апстракцију физичког хардвера који нам омогућава да покренемо много виртуелних рачунара на једном рачунару.
Инсталирани ВМ може заузети простор на диску вашег рачунара на различите начине:

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

Што више виртуелних машина по серверу, то више простора заузимају, а такође захтевају сталну подршку за окружење потребно за покретање ваше апликације.

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

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

Контејнер - како то функционише?

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

Сваки контејнер се може конфигурисати преко датотеке у пројекту доцкер-цомпосе који је укључен у главно решење - доцкер-цомпосе.имл. Тамо можете подесити различите параметре као што су назив контејнера, портови, идентификатори, ограничења ресурса, зависности између других контејнера. Ако не наведете име контејнера у подешавањима, Доцкер ће сваки пут креирати нови контејнер, дајући му име насумично.

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

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

Како је слика повезана са контејнером?

Имаге — главни елемент за сваки контејнер. Слика је креирана из Доцкерфиле-а који је додат пројекту и представља скуп система датотека (слојева) слојевитих један на другом и груписаних заједно, само за читање; максималан број слојева је 127.

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

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

Доцкерфиле може да садржи команде као што су:

  • ФРОМ — улазна тачка при формирању слике;
  • МАИНТАИНЕР - име власника слике;
  • РУН — извршење команде током склапања слике;
  • ДОДАЈ – копирање хост датотеке у нову слику; ако наведете УРЛ датотеке, Доцкер ће је преузети у наведени директоријум;
  • ЕНВ - варијабле окружења;
  • ЦМД - почиње креирање новог контејнера на основу слике;
  • ЕНТРИПОИНТ - команда се извршава када се контејнер покрене.
  • ВОРКДИР је радни директоријум за извршавање ЦМД команде.
  • УСЕР - поставља УИД за контејнер креиран на основу слике.
  • ВОЛУМЕ - монтира хост директоријум у контејнер.
  • ЕКСПОСЕ је скуп портова који се слушају у контејнеру.

Како функционише УнионФС?

УнионФС - услужни систем датотека (ФС) за Линук и ФрееБСД. Овај ФС имплементира механизам копирања на уписивање (Цопи-Он-Врите, ЦОВ). Радна јединица УнионФС-а је слој; сваки слој треба посматрати као посебан пуноправни систем датотека са хијерархијом директоријума из самог корена. УнионФС креира унион моунт за друге системе датотека и омогућава да се датотеке и директоријуми из различитих система датотека (који се називају виљушкама) комбинују у један кохерентан систем датотека, транспарентно за корисника.

Садржај директоријума са истим путањама ће се појавити заједно у једном уједињеном директоријуму (у једном именском простору) резултирајућег система датотека.

УнионФС комбинује слојеве на основу следећих принципа:

  • један од слојева постаје слој највишег нивоа, други и следећи слојеви постају слојеви нижег нивоа;
  • објекти слоја су доступни кориснику „од врха до дна“, тј. ако је тражени објекат у „горњем” слоју, враћа се, без обзира на присуство истог имена у „доњем” слоју; у супротном се враћа објекат „доњег” слоја; ако тражени објекат није ни тамо ни тамо, враћа се грешка „Нема такве датотеке или директоријума“;
  • радни слој је „врхњи“, односно све радње корисника за промену података одражавају се само на слоју највишег нивоа, без утицаја на садржај слојева нижих нивоа.

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

Доцкер нам омогућава да брзо применимо апликације и на најбољи начин искористимо систем датотека тако што ћемо поделити језгро ОС-а између свих контејнера, који раде као засебни процеси ОС-а.

Извор: ввв.хабр.цом

Додај коментар