VM அல்லது Docker?

உங்களுக்கு டோக்கர் தேவை, விஎம் அல்ல என்பதை எப்படி புரிந்துகொள்வது? நீங்கள் சரியாக என்ன தனிமைப்படுத்த விரும்புகிறீர்கள் என்பதை நீங்கள் தீர்மானிக்க வேண்டும். உத்தரவாதமான ஆதாரங்கள் மற்றும் மெய்நிகர் வன்பொருள் கொண்ட ஒரு கணினியை நீங்கள் தனிமைப்படுத்த விரும்பினால், தேர்வு VM இல் விழ வேண்டும். இயங்கும் அப்ளிகேஷன்களை தனித்தனி கணினி செயல்முறைகளாக நீங்கள் தனிமைப்படுத்த வேண்டும் என்றால், உங்களுக்கு டோக்கர் தேவைப்படும்.

எனவே டோக்கர் கொள்கலன்களுக்கும் விஎம்களுக்கும் என்ன வித்தியாசம்?

மெய்நிகர் இயந்திரம் (VM) அனைத்து மெய்நிகர் சாதனங்கள் மற்றும் மெய்நிகர் ஹார்ட் டிஸ்க் கொண்ட ஒரு மெய்நிகர் கணினி ஆகும், இதில் மெய்நிகர் சாதன இயக்கிகள், நினைவக மேலாண்மை மற்றும் பிற கூறுகளுடன் ஒரு புதிய சுயாதீன OS நிறுவப்பட்டுள்ளது. அதாவது, ஒரு கணினியில் பல மெய்நிகர் கணினிகளை இயக்க அனுமதிக்கும் இயற்பியல் வன்பொருளின் சுருக்கத்தை நாங்கள் பெறுகிறோம்.
நிறுவப்பட்ட VM வெவ்வேறு வழிகளில் வட்டு இடத்தை எடுத்துக்கொள்ளலாம்:

  • நிலையான ஹார்ட் டிஸ்க் இடம், இது மெய்நிகர் வன் வட்டை விரைவாக அணுக அனுமதிக்கிறது மற்றும் கோப்பு துண்டு துண்டாக தவிர்க்கிறது;
  • டைனமிக் நினைவக ஒதுக்கீடு. கூடுதல் பயன்பாடுகளை நிறுவும் போது, ​​அது ஒதுக்கப்பட்ட அதிகபட்ச தொகையை அடையும் வரை நினைவகம் மாறும் வகையில் ஒதுக்கப்படும்.

சர்வரில் அதிக மெய்நிகர் இயந்திரங்கள், அதிக இடத்தை எடுத்துக்கொள்கின்றன, மேலும் உங்கள் பயன்பாடு வேலை செய்யத் தேவையான சூழலின் நிலையான ஆதரவும் தேவைப்படுகிறது.

கூலியாள் கொள்கலன்களின் அடிப்படையில் பயன்பாடுகளை உருவாக்குவதற்கான மென்பொருள். கொள்கலன்கள் மற்றும் மெய்நிகர் இயந்திரங்கள் ஒரே மாதிரியான நன்மைகளைக் கொண்டுள்ளன, ஆனால் வித்தியாசமாக வேலை செய்கின்றன. கொள்கலன்கள் குறைந்த இடத்தை எடுத்துக்கொள்கின்றன, ஏனெனில் VM ஐ விட ஹோஸ்ட் சிஸ்டத்தின் பகிரப்பட்ட வளங்களை அதிகமாக பயன்படுத்துகிறது, ஏனெனில் VM போலல்லாமல், வன்பொருள் அல்ல, OS மட்டத்தில் மெய்நிகராக்கத்தை வழங்குகிறது. இந்த அணுகுமுறை குறைவான நினைவக தடம், வேகமான வரிசைப்படுத்தல் மற்றும் எளிதாக அளவிடுதல் ஆகியவற்றை வழங்குகிறது.

புரவலன் அமைப்பிற்கு தேவையான இடைமுகங்களை வழங்குவதன் மூலம் பயன்பாடுகளை இணைப்பதற்கு கொள்கலன் மிகவும் திறமையான பொறிமுறையை வழங்குகிறது. இந்த அம்சம் கன்டெய்னர்கள் கணினியின் மையத்தை பகிர்ந்து கொள்ள அனுமதிக்கிறது, அங்கு ஒவ்வொரு கொள்கலன்களும் பிரதான OS இன் தனி செயல்முறையாக இயங்குகிறது, அதன் சொந்த நினைவக பகுதிகள் (அதன் சொந்த மெய்நிகர் முகவரி இடம்) உள்ளது. ஒவ்வொரு கொள்கலனின் மெய்நிகர் முகவரி இடம் அதன் சொந்தமாக இருப்பதால், வெவ்வேறு நினைவகப் பகுதிகளைச் சேர்ந்த தரவை மாற்ற முடியாது.
டோக்கருக்கான சொந்த ஓஎஸ் லினக்ஸ் ஆகும் (டோக்கரை விண்டோஸ் மற்றும் மேகோஸிலும் பயன்படுத்தலாம்), இது அதன் முக்கிய நன்மைகளைப் பயன்படுத்துகிறது, இது பிளவு கர்னலை ஒழுங்கமைக்க அனுமதிக்கிறது. விண்டோஸில் டோக்கர் கொள்கலன்களின் வெளியீடு லினக்ஸ் மெய்நிகர் இயந்திரத்தில் நடைபெறும். கொள்கலன்கள் ஹோஸ்ட் சிஸ்டத்தின் OS ஐப் பகிர்ந்து கொள்கின்றன மற்றும் அவற்றுக்கான முக்கிய OS லினக்ஸ் ஆகும்.

கொள்கலன் - இது எப்படி வேலை செய்கிறது?

கொள்கலன் குறியீடு மற்றும் சார்புகளை இணைக்கும் பயன்பாட்டு மட்டத்தில் ஒரு சுருக்கம். கொள்கலன்கள் எப்போதும் படங்களிலிருந்து உருவாக்கப்படுகின்றன, எழுதக்கூடிய மேல் அடுக்கைச் சேர்த்து பல்வேறு அளவுருக்களை துவக்குகின்றன. ஒரு கொள்கலனுக்கு அதன் சொந்த எழுத்து அடுக்கு இருப்பதால், எல்லா மாற்றங்களும் அந்த லேயரில் சேமிக்கப்படும், பல கொள்கலன்கள் ஒரே முதன்மை படத்திற்கான அணுகலைப் பகிரலாம்.

ஒவ்வொரு கொள்கலனையும் டாக்கர்-கம்போஸ் திட்டத்தில் உள்ள ஒரு கோப்பு மூலம் கட்டமைக்க முடியும், முக்கிய தீர்வு, docker-compose.yml இல் சேர்க்கப்பட்டுள்ளது. அங்கு நீங்கள் கொள்கலன் பெயர், துறைமுகங்கள், அடையாளங்காட்டிகள், வள வரம்புகள், பிற கொள்கலன்களுக்கு இடையிலான சார்புகள் போன்ற பல்வேறு அளவுருக்களை அமைக்கலாம். அமைப்புகளில் கொள்கலனின் பெயரை நீங்கள் குறிப்பிடவில்லை எனில், ஒவ்வொரு முறையும் டோக்கர் ஒரு புதிய கொள்கலனை உருவாக்கி, அதற்கு தோராயமாக ஒரு பெயரைக் கொடுக்கும்.

ஒரு படத்திலிருந்து ஒரு கொள்கலன் தொடங்கப்பட்டால், கீழே உள்ள எந்த லேயர்களின் மேல் டோக்கர் படிக்க/எழுத கோப்பு முறைமையை ஏற்றுகிறது. எங்கள் டோக்கர் கண்டெய்னர் இயங்க வேண்டும் என்று நாம் விரும்பும் அனைத்து செயல்முறைகளும் இங்குதான் இயங்கும்.

டோக்கர் முதலில் ஒரு கொள்கலனைத் தொடங்கும் போது, ​​ஆரம்ப ரீட்/ரைட் லேயர் காலியாக இருக்கும். மாற்றங்கள் ஏற்படும் போது, ​​அவை அந்த அடுக்கில் பயன்படுத்தப்படுகின்றன; எடுத்துக்காட்டாக, நீங்கள் ஒரு கோப்பை மாற்ற விரும்பினால், அந்தக் கோப்பு கீழே உள்ள படிக்க-மட்டும் லேயரில் இருந்து படிக்க-எழுத லேயருக்கு நகலெடுக்கப்படும்.
கோப்பின் படிக்க-மட்டும் பதிப்பு இன்னும் இருக்கும், ஆனால் இப்போது நகலின் கீழ் மறைக்கப்பட்டுள்ளது. கொள்கலனின் வாழ்க்கைச் சுழற்சியைப் பொருட்படுத்தாமல், தரவைச் சேமிக்க தொகுதிகள் பயன்படுத்தப்படுகின்றன. ஒரு கொள்கலன் உருவாக்கப்படும் போது தொகுதிகள் துவக்கப்படும்.

கொள்கலனுடன் படம் எவ்வாறு தொடர்புடையது?

படத்தை - ஒவ்வொரு கொள்கலனுக்கும் முக்கிய உறுப்பு. திட்டத்தில் சேர்க்கப்பட்ட ஒரு Dockerfile இலிருந்து படம் உருவாக்கப்பட்டது மற்றும் கோப்பு முறைமைகளின் (அடுக்குகள்) ஒன்றின் மேல் ஒன்றாக அடுக்கி, ஒன்றாக தொகுக்கப்பட்டு, படிக்க மட்டுமே கிடைக்கும்; அடுக்குகளின் அதிகபட்ச எண்ணிக்கை 127 ஆகும்.

ஒவ்வொரு படத்தின் மையத்திலும் ஒரு அடிப்படை படம் உள்ளது, இது FROM கட்டளையால் குறிப்பிடப்படுகிறது - டாக்கர்ஃபைல் படத்தை உருவாக்கும் போது நுழைவு புள்ளி. ஒவ்வொரு லேயரும் படிக்க மட்டுமேயான அடுக்கு மற்றும் கோப்பு முறைமையை மாற்றியமைக்கும் ஒரு கட்டளையால் குறிப்பிடப்படுகிறது, இது ஒரு Dockerfile இல் எழுதப்பட்டுள்ளது.
இந்த அடுக்குகளை ஒரு படமாக இணைக்க, டோக்கர் மேம்பட்ட பல அடுக்கு யூனியன் கோப்பு முறைமையை (AuFS யூனியன்எஃப்எஸ் மேல் கட்டமைக்கப்பட்டுள்ளது) பயன்படுத்துகிறது, இது பல்வேறு கோப்பு அடுக்குகளிலிருந்து வெவ்வேறு கோப்புகள் மற்றும் கோப்பகங்களை வெளிப்படையாக ஒன்றுடன் ஒன்று இணைத்து, தொடர்புடைய கோப்பு முறைமையை உருவாக்குகிறது.

அடுக்குகள் மெட்டாடேட்டாவைக் கொண்டிருக்கின்றன, இது ஒவ்வொரு லேயரைப் பற்றிய தகவலை இயக்க நேரத்திலும் உருவாக்க நேரத்திலும் சேமிக்க உங்களை அனுமதிக்கிறது. ஒவ்வொரு லேயரும் அடுத்த லேயருக்கான இணைப்பைக் கொண்டுள்ளது, லேயருக்கு இணைப்பு இல்லை என்றால், இது படத்தின் மேல் அடுக்கு ஆகும்.

Dockerfile போன்ற கட்டளைகள் இருக்கலாம்:

  • FROM - படத்தின் உருவாக்கத்தில் நுழைவு புள்ளி;
  • பராமரிப்பாளர் - படத்தின் உரிமையாளரின் பெயர்;
  • RUN - பட சட்டசபையின் போது கட்டளை செயல்படுத்தல்;
  • சேர் - ஹோஸ்ட் கோப்பை ஒரு புதிய படத்திற்கு நகலெடுக்கிறது, நீங்கள் ஒரு URL கோப்பைக் குறிப்பிட்டால், டோக்கர் அதை குறிப்பிட்ட கோப்பகத்தில் பதிவிறக்கும்;
  • ENV - சூழல் மாறிகள்;
  • CMD - படத்தின் அடிப்படையில் ஒரு புதிய கொள்கலனை உருவாக்கத் தொடங்குகிறது;
  • ENTRYPOINT - கொள்கலன் தொடங்கும் போது கட்டளை செயல்படுத்தப்படுகிறது.
  • WORKDIR என்பது CMD கட்டளையை இயக்குவதற்கான செயல்பாட்டு அடைவு ஆகும்.
  • USER - படத்திலிருந்து உருவாக்கப்பட்ட கொள்கலனுக்கான UID ஐ அமைக்கிறது.
  • தொகுதி - கொள்கலனில் ஹோஸ்ட் கோப்பகத்தை ஏற்றுகிறது.
  • EXPOSE என்பது கொள்கலனில் கேட்கப்பட்ட துறைமுகங்களின் தொகுப்பாகும்.

யூனியன்எஃப்எஸ் எப்படி வேலை செய்கிறது?

யூனியன்எஃப்எஸ் — Linux மற்றும் FreeBSDக்கான சர்வீஸ் ஸ்டேக் கோப்பு முறைமை (FS). இந்த FS நகல்-ஆன்-ரைட் (நகல்-ஆன்-ரைட், COW) பொறிமுறையை செயல்படுத்துகிறது. யூனியன்எஃப்எஸ்-ன் வேலை அலகு ஒரு அடுக்கு ஆகும், ஒவ்வொரு அடுக்கையும் ரூட்டிலிருந்தே அடைவு படிநிலையுடன் தனித்தனி முழு அளவிலான கோப்பு முறைமையாகக் கருத வேண்டும். யூனியன்எஃப்எஸ் மற்ற கோப்பு முறைமைகளுக்கான யூனியன் மவுண்ட்டை உருவாக்குகிறது மற்றும் வெவ்வேறு கோப்பு முறைமைகளில் இருந்து (கிளைகள் என அழைக்கப்படும்) கோப்புகள் மற்றும் கோப்பகங்களை ஒரு ஒற்றை இணைக்கப்பட்ட கோப்பு முறைமையில் வெளிப்படையாக, பயனருக்கு வெளிப்படையாக ஒன்றிணைக்க உங்களை அனுமதிக்கிறது.

ஒரே பாதைகளைக் கொண்ட கோப்பகங்களின் உள்ளடக்கங்கள், கோப்பு முறைமையின் ஒரு ஒருங்கிணைந்த கோப்பகத்தில் (அதே பெயர்வெளியில்) ஒன்றாகக் காட்டப்படும்.

யூனியன்எஃப்எஸ் பின்வரும் கொள்கைகளின் அடிப்படையில் அடுக்குகளை ஒருங்கிணைக்கிறது:

  • அடுக்குகளில் ஒன்று மேல்-நிலை அடுக்காக மாறும், இரண்டாவது மற்றும் அடுத்தடுத்த அடுக்குகள் கீழ்-நிலை அடுக்குகளாக மாறும்;
  • அடுக்கு பொருள்கள் பயனருக்கு "மேலிருந்து கீழாக" அணுகக்கூடியவை, அதாவது. கோரப்பட்ட பொருள் "மேல்" அடுக்கில் இருந்தால், "கீழ்" அடுக்கில் அதே பெயரில் ஒரு பொருளின் இருப்பைப் பொருட்படுத்தாமல், அது திருப்பி அனுப்பப்படும்; இல்லையெனில், "கீழே" அடுக்கு பொருள் திரும்பும்; கோரப்பட்ட பொருள் அங்கு அல்லது இல்லை என்றால், "அத்தகைய கோப்பு அல்லது அடைவு இல்லை" என்ற பிழை திரும்பும்;
  • வேலை செய்யும் அடுக்கு "மேல்" ஒன்று, அதாவது, தரவை மாற்றுவதற்கான அனைத்து பயனர் செயல்களும் கீழ்-நிலை அடுக்குகளின் உள்ளடக்கங்களை பாதிக்காமல், மேல்-நிலை அடுக்கில் மட்டுமே பிரதிபலிக்கின்றன.

பயன்பாட்டு வேலைகளில் கொள்கலன்களைப் பயன்படுத்துவதற்கான மிகவும் பொதுவான தொழில்நுட்பம் டோக்கர் ஆகும். லினக்ஸ் கர்னல் வழங்கிய cgroups மற்றும் namespaces ஆகியவற்றின் அடிப்படையில் இது இந்த பகுதியில் தரநிலையாக மாறியுள்ளது.

தனித்தனி OS செயல்முறைகளாக இயங்கும் அனைத்து கொள்கலன்களுக்கும் இடையே OS கர்னலைப் பகிர்வதன் மூலம் பயன்பாடுகளை விரைவாக வரிசைப்படுத்தவும் மற்றும் கோப்பு முறைமையை சிறந்த முறையில் பயன்படுத்தவும் Docker அனுமதிக்கிறது.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்