VM හෝ Docker?

ඔබට අවශ්‍ය වන්නේ ඩොකර් මිස වීඑම් එකක් නොවන බව තේරුම් ගන්නේ කෙසේද? ඔබට හුදකලා කිරීමට අවශ්‍ය දේ හරියටම තීරණය කළ යුතුය. ඔබට සහතික කළ සම්පත් සහ අතථ්‍ය දෘඩාංග සහිත පද්ධතියක් හුදකලා කිරීමට අවශ්‍ය නම්, තේරීම VM මත වැටිය යුතුය. ඔබට ධාවන යෙදුම් වෙනම පද්ධති ක්‍රියාවලි ලෙස හුදකලා කිරීමට අවශ්‍ය නම්, ඔබට Docker අවශ්‍ය වේ.

ඉතින් ඩොකර් කන්ටේනර් සහ වීඑම් අතර වෙනස කුමක්ද?

අතථ්‍ය යන්ත්‍රය (VM) අතථ්‍ය උපාංග ධාවක, මතක කළමනාකරණය සහ අනෙකුත් සංරචක සමඟ නව ස්වාධීන මෙහෙයුම් පද්ධතියක් ස්ථාපනය කර ඇති සියලුම අතථ්‍ය උපාංග සහ අතථ්‍ය දෘඪ තැටියක් සහිත අථත්‍ය පරිගණකයකි. එනම්, එක් පරිගණකයක බොහෝ අතථ්‍ය පරිගණක ක්‍රියාත්මක කිරීමට ඔබට ඉඩ සලසන භෞතික දෘඩාංගවල සාරාංශයක් අපට ලැබේ.
ස්ථාපිත වීඑම් එකකට විවිධ ආකාරවලින් තැටි ඉඩ ලබා ගත හැක:

  • ස්ථාවර දෘඪ තැටි අවකාශය, අථත්ය දෘඪ තැටිය වෙත වේගවත් ප්රවේශයක් ලබා දෙන අතර ගොනු ඛණ්ඩනය වීම වළක්වයි;
  • ගතික මතකය වෙන් කිරීම. අතිරේක යෙදුම් ස්ථාපනය කරන විට, එය වෙන් කර ඇති උපරිම ප්රමාණයට ළඟා වන තෙක් මතකය ගතිකව ඒවා සඳහා වෙන් කරනු ලැබේ.

සේවාදායකයේ අථත්‍ය යන්ත්‍ර වැඩි වන තරමට ඒවා වැඩි ඉඩක් ලබා ගන්නා අතර ඔබේ යෙදුම ක්‍රියා කිරීමට අවශ්‍ය පරිසරයේ නිරන්තර සහාය අවශ්‍ය වේ.

Docker බහාලුම් මත පදනම් වූ යෙදුම් ගොඩනැගීම සඳහා මෘදුකාංගයකි. බහාලුම් සහ අතථ්‍ය යන්ත්‍රවලට සමාන ප්‍රතිලාභ ඇත, නමුත් වෙනස් ලෙස ක්‍රියා කරයි. බහාලුම් අඩු ඉඩක් ගනී, මන්ද VM වලට වඩා ධාරක පද්ධතියේ බෙදාගත් සම්පත් අධික ලෙස භාවිතා කරයි, මන්ද VM මෙන් නොව, දෘඪාංග නොව OS මට්ටමින් අථත්‍යකරණය සපයයි. මෙම ප්‍රවේශය අඩු මතක පියසටහනක්, වේගවත් යෙදවීමක් සහ පහසු පරිමාණයක් සපයයි.

ධාරක පද්ධතියට අවශ්‍ය අතුරුමුහුණත් ලබා දීමෙන් යෙදුම් ආවරණය කිරීම සඳහා බහාලුම් වඩාත් කාර්යක්ෂම යාන්ත්‍රණයක් සපයයි. මෙම විශේෂාංගය මඟින් පද්ධතියේ හරය බෙදා ගැනීමට බහාලුම්වලට ඉඩ සලසයි, එහිදී එක් එක් බහාලුම් ප්‍රධාන OS හි වෙනම ක්‍රියාවලියක් ලෙස ක්‍රියාත්මක වන අතර එයට තමන්ගේම මතක ප්‍රදේශ (එහිම අථත්‍ය ලිපින අවකාශය) ඇත. එක් එක් බහාලුම්වල අතථ්‍ය ලිපින අවකාශය තමන්ගේම බැවින්, විවිධ මතක ප්‍රදේශ වලට අයත් දත්ත වෙනස් කළ නොහැක.
Docker සඳහා දේශීය මෙහෙයුම් පද්ධතිය Linux වේ (Docker Windows සහ MacOS මත ද භාවිතා කළ හැක), එය එහි ප්‍රධාන වාසි භාවිතා කරයි, එමඟින් එය බෙදුණු කර්නලයක් සංවිධානය කිරීමට ඉඩ සලසයි. වින්ඩෝස් හි ඩොකර් බහාලුම් දියත් කිරීම ලිනක්ස් අථත්‍ය යන්ත්‍රයක් තුළ සිදුවනු ඇත, මන්ද බහාලුම් ධාරක පද්ධතියේ මෙහෙයුම් පද්ධතිය බෙදා ගන්නා අතර ඒවා සඳහා ප්‍රධාන මෙහෙයුම් පද්ධතිය ලිනක්ස් වේ.

කන්ටේනර් - එය ක්රියා කරන්නේ කෙසේද?

කන්ටේනර් කේතය සහ පරායත්තතා ඒකාබද්ධ කරන යෙදුම් මට්ටමින් වියුක්ත කිරීමකි. බහාලුම් සෑම විටම රූප වලින් නිර්මාණය කර ඇත, ලිවිය හැකි ඉහළ ස්ථරයක් එකතු කිරීම සහ විවිධ පරාමිතීන් ආරම්භ කිරීම. කන්ටේනරයකට තමන්ගේම ලිවීමේ ස්ථරයක් ඇති නිසා සහ සියලුම වෙනස්කම් එම ස්ථරයේ ගබඩා කර ඇති නිසා, බහු බහාලුම්වලට එකම ප්‍රධාන රූපයට ප්‍රවේශය බෙදා ගත හැකිය.

සෑම බහාලුමක්ම ප්‍රධාන විසඳුම වන docker-compose.yml හි ඇතුළත් docker-compose ව්‍යාපෘතියේ ගොනුවක් හරහා වින්‍යාසගත කළ හැක. එහිදී ඔබට බහාලුම් නාමය, වරායන්, හඳුනාගැනීම්, සම්පත් සීමාවන්, අනෙකුත් බහාලුම් අතර පරායත්තතා වැනි විවිධ පරාමිතීන් සැකසිය හැක. ඔබ සැකසුම් තුළ බහාලුම් නාමයක් සඳහන් නොකරන්නේ නම්, ඩොකර් සෑම අවස්ථාවකම නව බහාලුමක් නිර්මාණය කරයි, එයට අහඹු ලෙස නමක් පවරයි.

රූපයකින් බහාලුමක් ආරම්භ කළ විට, Docker පහත ඕනෑම ස්ථරයක් මත කියවීමේ/ලිවීමේ ගොනු පද්ධතිය සවි කරයි. අපගේ ඩොකර් කන්ටේනරය ක්‍රියාත්මක කිරීමට අවශ්‍ය සියලුම ක්‍රියාදාමයන් ක්‍රියාත්මක වන්නේ මෙහිදීය.

Docker මුලින්ම කන්ටේනරයක් ආරම්භ කරන විට, ආරම්භක කියවීමේ/ලියන ස්ථරය හිස්ය. වෙනස්කම් සිදු වන විට, එම ස්ථරයට ඒවා යොදනු ලැබේ; උදාහරණයක් ලෙස, ඔබට ගොනුවක් වෙනස් කිරීමට අවශ්‍ය නම්, එම ගොනුව පහත කියවීමට පමණක් වන ස්ථරයේ සිට කියවීමට-ලිවීමේ ස්ථරයට පිටපත් කරනු ලැබේ.
ගොනුවේ කියවීමට පමණක් අනුවාදය තවමත් පවතිනු ඇත, නමුත් දැන් පිටපත යටතේ සඟවා ඇත. බහාලුම්වල ජීවන චක්‍රය නොසලකා දත්ත ගබඩා කිරීමට වෙළුම් භාවිතා කරයි. බහාලුමක් නිර්මාණය කරන විට වෙළුම් ආරම්භ වේ.

කන්ටේනරය සමඟ රූපය සම්බන්ධ වන්නේ කෙසේද?

රූපය - එක් එක් බහාලුම් සඳහා ප්රධාන අංගය. රූපය නිර්මාණය කර ඇත්තේ ව්‍යාපෘතියට එකතු කරන ලද Dockerfile එකකින් වන අතර එය ගොනු පද්ධති (ස්ථර) කට්ටලයක් එකිනෙක මත ස්ථර කර එකට කාණ්ඩගත කර ඇත, කියවීමට පමණක් ලබා ගත හැකිය; උපරිම ස්ථර ගණන 127 කි.

එක් එක් රූපයේ හදවතේ FROM විධානය මගින් නියම කරන ලද මූලික රූපයක් ඇත - Dockerfile රූපයක් ජනනය කිරීමේදී ඇතුල් වීමේ ස්ථානය. සෑම ස්ථරයක්ම කියවීමට පමණක් වන ස්ථරයක් වන අතර එය Dockerfile එකක ලියා ඇති ගොනු පද්ධතිය වෙනස් කරන තනි විධානයකින් නිරූපණය කෙරේ.
මෙම ස්ථර තනි රූපයක් බවට ඒකාබද්ධ කිරීම සඳහා, ඩොකර් විසින් උසස් බහු-ස්ථර යූනියන් ගොනු පද්ධතිය (AuFS යුනියන්එෆ්එස් මත ගොඩනගා ඇත) භාවිතා කරයි, විවිධ ගොනු ස්ථර වලින් විවිධ ගොනු සහ නාමාවලි විනිවිද පෙනෙන ලෙස අතිච්ඡාදනය වීමට ඉඩ සලසයි, සම්බන්ධිත ගොනු පද්ධතියක් නිර්මාණය කරයි.

ස්ථර වල පාර-දත්ත අඩංගු වන අතර එමඟින් එක් එක් ස්ථරයට අදාළ තොරතුරු ධාවන වේලාවේදී සහ ගොඩනැගීමේ වේලාවේදී ගබඩා කිරීමට ඉඩ සලසයි. සෑම ස්ථරයකම ඊළඟ ස්ථරයට සබැඳියක් අඩංගු වේ, ස්තරයට සබැඳියක් නොමැති නම්, මෙය රූපයේ ඉහළම ස්ථරය වේ.

Dockerfile වැනි විධාන අඩංගු විය හැක:

  • FROM - රූපය සෑදීමේදී ඇතුල් වීමේ ස්ථානය;
  • නඩත්තුකරු - රූපයේ හිමිකරුගේ නම;
  • RUN - රූප එකලස් කිරීමේදී විධාන ක්රියාත්මක කිරීම;
  • ADD - ධාරක ගොනුව නව රූපයකට පිටපත් කිරීම, ඔබ URL ගොනුවක් සඳහන් කරන්නේ නම්, Docker එය නිශ්චිත නාමාවලියට බාගත කරනු ඇත;
  • ENV - පරිසර විචල්යයන්;
  • CMD - රූපය මත පදනම්ව නව බහාලුමක් නිර්මාණය කිරීම ආරම්භ කරයි;
  • ENTRYPOINT - කන්ටේනරය ආරම්භ කරන විට විධානය ක්රියාත්මක වේ.
  • WORKDIR යනු CMD විධානය ක්‍රියාත්මක කිරීම සඳහා ක්‍රියාකාරී නාමාවලියයි.
  • USER - රූපයෙන් සාදන ලද බහාලුම සඳහා UID සකසයි.
  • VOLUME - ධාරක නාමාවලිය බහාලුමට සවි කරයි.
  • EXPOSE යනු කන්ටේනරය තුළ සවන් දෙන වරායන් සමූහයකි.

UnionFS ක්‍රියා කරන්නේ කෙසේද?

යුනියන්එෆ්එස් — Linux සහ FreeBSD සඳහා සේවා තොග ගොනු පද්ධතිය (FS). මෙම FS පිටපත්-මත-ලිවීම (පිටපත්-මත-ලිවීම, COW) යාන්ත්‍රණය ක්‍රියාත්මක කරයි. යුනියන්එෆ්එස් හි ක්‍රියාකාරී ඒකකය ස්ථරයකි, සෑම ස්ථරයක්ම මූලයේ සිටම ඩිරෙක්ටරි ධුරාවලියක් සහිත වෙනම සම්පූර්ණ ගොනු පද්ධතියක් ලෙස සැලකිය යුතුය. යුනියන්එෆ්එස් වෙනත් ගොනු පද්ධති සඳහා යුනියන් මවුන්ට් එකක් නිර්මාණය කරන අතර ඔබට විනිවිද පෙනෙන ලෙස විවිධ ගොනු පද්ධතිවලින් (ශාඛා ලෙස හඳුන්වන) ගොනු සහ නාමාවලි තනි සම්බන්ධිත ගොනු පද්ධතියකට විනිවිද පෙනෙන ලෙස පරිශීලකයාට ඒකාබද්ධ කිරීමට ඉඩ සලසයි.

එකම මාර්ග සහිත නාමාවලිවල අන්තර්ගතය ප්‍රතිඵලයක් ලෙස ලැබෙන ගොනු පද්ධතියේ එක් ඒකාබද්ධ නාමාවලියක (එකම නාම අවකාශයේ) එකට ප්‍රදර්ශනය කෙරේ.

යුනියන්එෆ්එස් පහත සඳහන් මූලධර්ම මත පදනම්ව ස්ථර ඒකාබද්ධ කරයි:

  • එක් ස්ථරයක් ඉහළ මට්ටමේ ස්ථරයක් බවට පත් වේ, දෙවන සහ පසුව ස්ථර පහළ මට්ටමේ ස්ථර බවට පත් වේ;
  • ස්ථර වස්තු පරිශීලකයාට "ඉහළ සිට පහළට" ප්රවේශ විය හැක, i.e. ඉල්ලුම් කරන ලද වස්තුව "ඉහළ" ස්ථරයේ තිබේ නම්, "පහළ" ස්ථරයේ එකම නම සහිත වස්තුවක් පැවතීම නොසලකා එය ආපසු ලබා දෙනු ලැබේ; එසේ නොමැති නම්, "පහළ" ස්ථර වස්තුව ආපසු ලබා දෙනු ලැබේ; ඉල්ලන ලද වස්තුව එහි හෝ එහි නොමැති නම්, "එවැනි ගොනුවක් හෝ නාමාවලියක් නොමැත" යන දෝෂය ආපසු ලබා දෙනු ඇත;
  • වැඩ කරන ස්තරය "ඉහළ" එකයි, එනම්, දත්ත වෙනස් කිරීම සඳහා වන සියලුම පරිශීලක ක්‍රියා පහළ මට්ටමේ ස්ථර වල අන්තර්ගතයට බලපාන්නේ නැතිව ඉහළ මට්ටමේ ස්ථරයේ පමණක් පිළිබිඹු වේ.

යෙදුම් වැඩ වලදී බහාලුම් භාවිතා කිරීම සඳහා වඩාත් පොදු තාක්ෂණය ඩොකර් වේ. එය ලිනක්ස් කර්නලය මගින් සපයන ලද cgroups සහ namespaces මත ගොඩනැගෙන මෙම ප්‍රදේශයේ ප්‍රමිතිය බවට පත්ව ඇත.

වෙනම OS ක්‍රියාවලි ලෙස ක්‍රියාත්මක වන සියලුම බහාලුම් අතර OS කර්නලය බෙදාගැනීමෙන් ඉක්මනින් යෙදුම් යෙදවීමට සහ ගොනු පද්ධතියෙන් උපරිම ප්‍රයෝජන ගැනීමට Docker අපට ඉඩ සලසයි.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න