கொள்கலன்கணினி(Container), மெய்நிகர்கணினி(Virtual Machine(VM)) ஆகியவை குறித்த தொடக்கநிலையாளர்களுக்கான நட்புடன்கூடிய அறிமுகம்

நாம் ஒரு நிரலாளர் அல்லது தொழில்நுட்ப வல்லுநர் எனில் இணைப்பாளரைப் (Docker) பற்றி கண்டிப்பாக கேள்விப்பட்டிருக்கலாம்:அதாவது இணைப்பாளர் என்பது “கொள்கலன் கணிகளில்” கட்டுதல், பதிவேற்றுதல் என்றவாறு பயன் பாடுகளை இயக்குவதற்கு தேவையான அனைத்து வசதிகளையும் கொண்டதொரு பயனுள்ள கருவியாகும். தற்போதைய நவீனகாலச்சூழலில் மேம்படுத்துநர்கள் கணினியின் அமைவுநிருவாகிகள் போன்றவர்களின் கவனத்தை இது ஈர்க்கும் வகையில், இல்லாமல் இருப்பது மிகக்கடினம். கூகுள், VMware , அமேசான் போன்ற பெரிய சேவையாளர்கள் கூட இதனை ஆதரிக்கின்ற வகையிலான சேவைகளை உருவாக்குகின்றனர்.
இணைப்பாளரின் பயன் பற்றிய தகவல் உடனடியாக நம்மனதிற்கு தெரியுமா தெரியாதா என்பதைப் பொருட்படுத்தாமல், “கொள்கலன்கணினி(Container)” என்றால் என்ன அதனை ஒரு மெய்நிகர்கணினியுடன் (VM) எவ்வாறு ஒப்பிடுவது என்பதைப் பற்றிய சில அடிப்படைக் கருத்துகளைப் புரிந்துகொள்வது முக்கியமாகும். தற்போது நாமெல்லோரும் பயன்படுத்தி கொண்டிருக்கின்ற இணையமானது இணைப்பாளருக்கான சிறந்த பயன்பாட்டு வழிகாட்டிகளால் நிரம்பியிருந்தாலும் , குறிப்பாக ஒரு கொள்கலன் கணினி எவ்வாறு உருவாக்கப்பட்டுள்ளதுஅதனைக் கொண்டு என்னென்ன பணிகள் செய்யமுடியும் எனும் துவக்க நிலையாளர்களுக்கு ஏற்ற கருத்தியல் வழிகாட்டிகள் எதுவும் இதுவரையில் என்னால் கண்டுபிடிக்க முடியவில்லை . எனவே, இந்த இடுகை அந்த சிக்கலை தீர்வுசெய்திடும் என நம்புகின்றேன்
அதனோடு மெய்நிகர்கணினிகள்(Virtual Machine(VM)), கொள்கலன்கணினிகள்(Containers) என்றால் என்ன என்பதைப் புரிந்துகொள்வதன் மூலம் இதனை துவக்கலாம்.
“கொள்கலன்கணினி(Container)” “மெய்நிகர்கணினி(VM)” என்றால் என்ன?
கொள்கலன்கணினிகள்(Containers) மெய்நிகர்கணினிகள்(VM) ஆகியவை அவற்றின் இலக்குகளில் ஒரே மாதிரியானவை: இவ்விரண்டும் ஒரு பயன்பாடு அதன் சார்புகளை தனிமைப்படுத்தி எங்கெங்கும் இயங்கக்கூடிய ஒரு சுதந்திரமான-கட்டுமானத்தினை வழங்கிடுகின்ற அலகு ஆக திகழ்கின்றன.
மேலும், கொள்கலன்கணினி, மெய்நிகர்கணினி ஆகிய இரண்டும் தொட்டுணரக்கூடிய வன்பொருளின் தேவையை நீக்கி, ஆற்றல் நுகர்வு , செலவுத் திறன் ஆகிய இரண்டிலும் கணினியின் வளங்களை மிகவும் திறமையாகப் பயன்படுத்திகொள்வதற்கு அனுமதிக்கின்றன.
கொள்கலன்கணினி ,மெய்நிகர்கணினி ஆகிய இரண்டிற்கும் இடையிலான முக்கிய வேறுபாடு அவற்றின் கட்டமைப்பிலும் அணுகுமுறையிலும் மட்டுமே யாகும்.
மெய்நிகர்கணினி(Virtual Machine(VM))
மெய்நிகர்கணினி(VM) என்பது ஒரு உண்மையான கணினியின் செயலாக்கமாகும், இது ஒரு உண்மையான கணினி போன்றே நிரலாக்கங்களை (பயன்பாடுகளை) இயக்குகின்றன. “மீமேற்பார்வையாளரை(hypervisor)” பயன்படுத்தி ஒரு தொட்டுணரக்கூடிய கணினியின் மேல் இவைகள் இயக்குகின்றது. ஒரு மீமேற்பார்வையாளர்(hypervisor) ஆனது புரவலர் கணினியில் அல்லது “வெற்று உலோகத்தில்(bare-metal)” இயங்குகிறது. இந்நிலையில் மீமேற்பார்வை யாளர்(hypervisor) என்றால் என்ன? எனும் கேள்வி நம்மனதில் எழும் நிற்க.
மீமேற்பார்வையாளர்(hypervisor) என்பது மெய்நிகர்கணினிகளின் மேல் இயங்கு கின்ற மென்பொருள், நிலைச்சாதனம்(firmware) அல்லது வன்பொருளின் ஒரு பகுதியாகும். மீமேற்பார்வையாளர்கள் ஆனவை “புரவலர் கணினி (host machine)” என குறிப்பிடப்படும் தொட்டுணரக்கூடிய கணினிகளில் இயங்குகின்றன. புரவலர் கணினியானது VMகளுக்கு தேவையான RAM , CPU உள்ளிட்ட ஆதாரங்களை வழங்குகிறது. இந்த ஆதாரங்கள் VM களுக்கு இடையில் பகிர்ந்து கொள்ளப்படு கி்ன்றன, மேலும் இவைகளை பொருத்தமாக அமையுமாறு விநியோகிக்க முடியும். எனவே, ஒரு VM அதிக வளங்களை உட்கொள்கின்ற மீப்பெரும் பயன்பாட்டினை இயக்கினால், அதே புரவலர் கணினியில் இயங்கு கி்ன்ற மற்ற VMகளை விட, அதற்கு அதிக ஆதாரங்களை ஒதுக்கவேண்டும்.
புரவலர் கணினியில் இயங்குகி்ன்ற VM (மீண்டும், மீமேற்பார்வையாளரைப் பயன்படுத்தி) ஆனது “விருந்தினர் கணினி(Guest machine)” என்றும் அழைக்கப்படுகிறது. இந்த விருந்தினர் கணினியில் பயன்பாடானது, அந்த பயன்பாடு இயக்குவதற்கு தேவையான அனைத்தையும் கொண்டுள்ளது (எ.கா. அமைவு இரும மொழி நிரல்கள், நூலகங்கள்). மெய்நிகராக்கப்பட்ட பிணைய ஏற்பான்கள், சேமிப்பகங்கள், CPU உட்பட அதற்கு சொந்தமான முழுமையான மெய்நிகராக்கப் பட்ட வன்பொருள் அடுக்கையும் இது கொண்டுள்ளது – அதாவது அதற்கு சொந்தமான முழு அளவிலான விருந்தினர் இயக்க முறைமையையும் கொண்டுள்ளது. விருந்தினர் கணினியானது கணினியின் உள்பகுதியில் இருந்து கொண்டு, தான் அமர்ந்திருக்கின்ற கணினியின் சொந்த அர்ப்பணிப்பு ஆதாரங்களுடன் அதன் சொந்த அலகு போன்று செயல்படுகிறது. வெளியில் இருந்து காணும் நாம், இது ஒரு VM – புரவலர் கணினியால் வழங்கப்பட்ட வளங்களைப் பகிர்ந்துகொள்வதை அறிந்துகொள்ளமுடியும்.
மேலே குறிப்பிட்டுள்ளபடி, ஒரு விருந்தினர் கணினியானது புரவலராக செய்யப்பட்ட மீமேற்பார்வையாளர் அல்லது ஒரு வெற்றுஉலோக(bare-metal) மீமேற்பார்வை யாளரில் இயங்க முடியும். அவற்றுக்கிடையே சில முக்கியமான வேறுபாடுகள் உள்ளன.
முதலில், புரவலராக செய்யப்பட்ட மெய்நிகராக்க மீமேற்பார்வையாளர் ஆனது புரவலர் கணினியின் இயக்க முறைமையில் இயங்குகிறது. எடுத்துக்காட்டாக, OSX இயங்கும் கணினியில் அந்த OS க்கு மேல் VM (எ.கா. VirtualBox அல்லது VMware Workstation 8) நிறுவப்பட்டிருக்கும். VM க்கு வன்பொருளுக்கான நேரடி அணுகல் இல்லை, எனவே இது புரவலர் கணினியின் இயக்க முறைமை வாயிலாகவே செயல்படமுடியும்
புரவலராக செய்யப்பட்ட மீமேற்பார்வையாளரின் நன்மை என்னவென்றால், அடிப்படை வன்பொருட்களின் முக்கியத்துவம் மிக குறைவாக கொண்டுள்ளது. புரவலரின் இயக்க முறைமை மீமேற்பார்வையாளருக்குப் பதிலாக வன்பொருள் இயக்கிகளுக்குப் பொறுப்பாகும், எனவே இது அதிக “வன்பொருள் இணக்கத்தன்மை” கொண்டதாகக் கருதப்படுகிறது. மறுபுறம், வன்பொருள், மீமேற்பார்வையாளர் ஆகியவற்றிற்கு இடையில் உள்ள இந்த கூடுதல் அடுக்கு அதிக ஆதாரங்களை உருவாக்குகிறது, இது VM இன் செயல்திறனைக் குறைக்கிறது.
ஒரு வெற்று உலோக மீமேற்பார்வையாளரின் சூழல், புரவலர் கணினியின் வன்பொருளை நிறுவுகைசெய்து இயக்குவதன் மூலம் செயல்திறனின் சிக்கலைச் சமாளிக்கிறது. இது அடிப்படை வன்பொருளுடன் நேரடியாக இடைமுகமாக இருப்பதால், அதை இயக்க புரவலர் இயக்கமுறைமை தேவையில்லை. இந்த வழக்கில், இயக்க முறைமையாக புரவலர் கணினியின் சேவையாளரில் நிறுவுகைசெய்யப்பட்ட முதல் செயல் மீமேற்பார்வையாளராக இருப்பதாகும். புரவலராக செய்யப்பட்ட மீமேற்பார்வையாளரைப் போன்றில்லாமல், ஒரு வெற்று-உலோக மீமேற்பார்வையாளர்ஆனது அதன் சொந்த சாதன இயக்கிகளைக் கொண்டுள்ளது , எந்தவொரு I/O, செயலாக்கம் அல்லது OS-குறிப்பிட்ட பணிகளுக்கு நேரடியாக ஒவ்வொரு கூறுகளுடனும் தொடர்பு கொள்கிறது. இது சிறந்த செயல்திறன், அளவிடுதல் நிலைப்புத் தன்மை ஆகியவற்றினால் விளைகிறது. இங்குள்ள பரிமாற்றம் என்னவெனில், வன்பொருள் இணக்கத்தன்மை குறைவாக உள்ளது, ஏனெனில் மீமேற்பார்வை யாளரில் உள்ளமைக்கப்பட்ட சாதன இயக்கிகள் மட்டுமே இருக்க முடியும்.
மீமேற்பார்வையாளர்களைப் பற்றி இவ்வளவு பேசிய பிறகு, VM , புரவலர் கணினி ஆகியஇரண்டிற்கும் இடையில் இந்த கூடுதல் “மீமேற்பார்வையாளர்” அடுக்கு ஏன் தேவை என்ற கேள்வி நம்முடைய மனதில் எழும் நிற்க
VM ஆனது தனக்கென ஒரு மெய்நிகர் இயக்க முறைமையைக் கொண்டி ருப்பதால், இந்த விருந்தினர் இயக்க முறைமையை நிர்வகிப்பதற்கும் இயக்குவதற்கும் VMகளுக்கு ஒரு தளத்தை வழங்குவதில் மீமேற்பார்வையாளர் ஆனது முக்கியப் பங்கு வகிக்கிறது. புரவலர் கணினிகள் அவற்றின் மேல் விருந்தினராக இயங்குகின்ற மெய்நிகர் கணினிகளில் தங்கள் வளங்களைப் பகிர்ந்து கொள்ள இது அனுமதிக்கிறது.
மேலும்VMகள் ஆனவை மெய்நிகர் வன்பொருள், ஒரு உருவாக்கமையம் (அதாவது OS) , ஒவ்வொரு புதிய VMக்கான பயனர் இடத்தையும் தொகுக்கிறது.
கொள்கலன்கணினி(Container)
வன்பொருள் மெய்நிகராக்கத்தை வழங்குகின்ற VM போன்றில்லாமல், ஒரு கொள்கலன்கணினியானது “பயனர் இடத்தை” சுருக்குவதன் மூலம் இயக்க முறைமையின்-நிலையில் மெய்நிகராக்கத்தை வழங்குகிறது. கொள்கலன் கணினி என்ற சொல்லை விளக்கமளிக்கும்போது இதுகுறித்து என்ன சொல்லப்படுகின்றது என்பதை காணலாம்.
தேவையான அனைத்து நோக்கங்களுக்காக, கொள்கலன்கணினிகள் ஒரு VM போன்று இருக்கும். எடுத்துக்காட்டாக, அவை செயலாக்கத்திற்கான தனிப்பட்ட இடத்தைக் கொண்டுள்ளன, கட்டளைகளை வழிசெலுத்தியாக இயக்கலாம், தனிப்பட்ட பிணைய இடைமுகம் ,IPமுகவரி, தனிப்பயன் வழிகள்,IPஅட்டவணை விதி ஆகியவற்றினை அனுமதிக்கலாம், கோப்பு முறைமைகளை பதிவேற்றம் செய்திடலாம் என்பன போன்ற பல்வேறு பணிகளை செய்திடுகின்றது.
கொள்கலன்கணினிகள் , VM கணினிகள் ஆகியவற்றிற்கு இடையே உள்ள ஒரு பெரிய வேறுபாடு என்னவென்றால், கொள்கலன்கணினிகள் புரவலர் கணினியினுடைய அமைவின் உருவாக்கமையத்தினை மற்ற கொள்கலன் கணினிகளுடன் *பகிர்ந்து கொள்கின்றன*. என்பதேயாகும்
கொள்கலண்கணினிகள் பயனர் இடத்தை மட்டுமே தொகுக்கின்றன, VM போன்ற உருவாக்கமையத்தை அல்லது மெய்நிகர் வன்பொருளை அன்று. ஒரு புரவலர் கணினியில் பல கொள்கலன்கணினிகளை இயக்குவதற்காக அனுமதிக்க ஒவ்வொரு கொள்கலன் கணினியும் அதன் சொந்த தனிப்பட்ட பயனர் இடத்தைப் பெறுகிறது. அனைத்து இயக்க முறைமையின் நிலையான கட்டமைப்பும் கொள்கலன்கணினிகள் முழுவதும் பகிரப்படுவதை நாம் காணலாம். புதிதாக உருவாக்கப்பட்ட பகுதிகள் குப்பைத்தொட்டிகளும் நூலகங்களும்(bins and libs) மட்டுமேயாகும். இதுவே கொள்கலன்கணினிகளை மிகவும் இலகுவாக ஆக்குகிறது.
இந்நிலையில் இணைப்பாளர்(Docker) எங்கே வருகின்றது? என்ற சந்தேகம் நம்மனதில் எழும் நிற்க.
இணைப்பாளர்(Docker) என்பது லினக்சின் கொள்கலன்கணினிகளை அடிப்படையாகக் கொண்ட ஒரு திறமூல செயல்திட்டமாகும். இயக்க முறைமையின் மேல் கொள்கலன்கணினிகளை உருவாக்க பெயர்வெளிகள் கட்டுப்பாட்டு குழுக்கள் போன்ற லினக்ஸ் உருவாக்கமைய வசதிகளை இது பயன்படுத்திகொள்கிறது.
கொள்கலன்கணினிகள் புதியவை அல்ல; கூகுள் பல ஆண்டுகளாக தங்களுடைய சொந்த கொள்கலன்கணினி தொழில்நுட்பத்தைப் பயன்படுத்தி வருகிறது.Solaris Zones, BSD jails, LXC ஆகியவை பல ஆண்டுகளாக மற்ற லினக்ஸ் கொள்கலன்கணினி தொழில்நுட்பங்களில் செயல்படு பவைகளாகும்.

தற்போதுஇணைப்பாளர் ஏன் திடீரென்று முக்கியத்துவம் பெறுகின்றது? என்ற சந்தேகம் நம்மனதில் எழும் நிற்க.
1. பயன்பாட்டின் எளிமை: மேம்படுத்துநர்கள், அமைவு நிருவாகிகள், கட்டமைப்பாளர்கள் போன்றபலர் – கையடக்க பயன்பாடுகளை விரைவாக உருவாக்க பரிசோதிக்க, கொள்கலன்கணினிகளைப் பயன்படுத்திக் கொள்வதை இணைப்பாளர் மிகவும் எளிதாக்கியுள்ளது. இது யாரையும் தங்கள் மடிக்கணினியில் ஒரு பயன்பாட்டை தொகுக்க அனுமதிக்கிறது, இது எந்தவொரு பொதுவான மேககணினி, தனிப்பட்ட மேககணினி அல்லது வெற்று உலோகத்திலும் கூட எதையும் மாற்றம் செய்யாமல் இயங்குகின்ற திறன்மிக்கது. இதனை பயன்படுத்தி கொள்வதற்கான மந்திரம்: “ஒருமுறை கட்டமைத்திடுக, எங்கு வேண்டுமானாலும் இயக்கிடுக.” என்பதேயாகும்
2. வேகம்: கட்டமைப்பாளர் கொள்கலன்கணினிகள் மிகவும் இலகுரகமானவை விரைவாக செயல்படக்கூடியவை. கொள்கலன்கணினிகள் உருவாக்கமையத்தில் இயங்குகின்ற மணற்தொட்டியாக்கப்பட்ட(sandboxed) சூழல்கள் என்பதால், அவை குறைவான வளங்களை எடுத்துக் கொள்கின்றன. ஒவ்வொரு முறையும் முழுமையாக மெய்நிகர் இயக்க முறைமையை துவக்க வேண்டியிருப்பதால், அதிக நேரம் எடுத்துகொள்கின்ற VMகளுடன் ஒப்பிடும்போது, ஒரு இணைப்பாளரின் கொள்கலன்கணினியை சிலநொடிகளில் உருவாக்கி இயக்கலாம்.
3. இணைப்பாளர் மையம்(Docker Hub): இணைப்பாளரின் பயனர்களும் இணைப்பாளர் மையத்தின் பெருகிவரும் வளமானச்சூழல் அமைப்பிலிருந்து பயனடைகின்றனர், இது “Docker images களுக்கான அங்காடி” என தவறாக நினைக்கலாம். Docker Hub ஆனது அதற்கான சமூக குழுவால் உருவாக்கப்பட்ட பல்லாயிரக்கணக்கான பொது images கொண்டுள்ளது, அவை பயன்பாட்டிற்கு உடனடியாகக் கிடைக்கின்றன. நம்முடைய தேவைகளைப் பூர்த்தி செய்கின்ற images தேடுவது நம்பமுடியாத அளவிற்கு எளிதானது, எந்த மாற்றமும் செய்திடாமல் உடனடியாக இழுத்துசென்று பயன்படுத்தி கொள்வதற்காகத் தயாராக உள்ளன
4. தகவமைப்புத்திறனும் விரிவடையும் திறனும் : நம்முடைய பயன்பாட்டின் செயல்பாட்டை தனிப்பட்ட கொள்கலன்கணினிகளாக உடைப்பதை இணைப்பாளர் எளிதாக்குகிறது. எடுத்துக்காட்டாக, Node.js எனும் பயன்பாடு மற்றொரு கொள்கலன்கணினியில் இருக்கும்போது Postgres தரவுத்தளத்தை ஒரு கொள்கலனிலும், Redis என்பதை சேவையகத்திலும் இயக்குகின்ற திறன் கொண்டுள்ளது. தற்போது இணப்பாளர் மூலம், நம்மமுடைய பயன்பாட்டை உருவாக்க இந்தக் கொள்கலன் கணினிகளை ஒன்றாக இணைப்பது எளிதாகிவிட்டது, இது எதிர்காலத்தில் தனித்தனியாக கூறுகளை அளவிடுவது அல்லது புதுப்பிப்பதை எளிதாக்குகிறது.
கடைசியாக ஆனால் குறைந்தது அன்று,இவ்வாறான பல்வேறு வசதிகளுடைய திமிங்கலம் போன்ற இணைப்பாளரை அனைவரும் விரும்புவார்கள் அல்லவா 😉
இணைப்பாளரின் அடிப்படை கருத்தமைவுகள்
இப்போது நாம் இணைப்பாளர் பற்றிய பெரியஉருவத்தை அறிந்துகொண்டோம், அதனால் தற்போது இணைப்பாளரின் அடிப்படை பகுதிகளை துண்டு துண்டாக பிரித்து காண்போம்:

இணைப்பாளர் இயந்திரம்
இணைப்பாளர் இயந்திரம்(Docker engine) என்பது இணைப்பாளர் இயங்குகின்ற ஒரு அடுக்கு ஆகும். இது இயக்க நேரம், கொள்கலன்கணினிகள், images, உருவாக்கங்கள் போன்ற பலவற்றை நிர்வகிக்கின்ற ஒரு இலகுரக கருவியாகும். இது லினக்ஸ் கணினிகளில் இயல்பாக இயங்கிடுமாறு பின்வருமாறான உருப்புகளுடனஅஉருவாக்கப்பட்டுள்ளது:
1. புரவலர் கணினியில் இயங்குகின்ற இணைப்பாளரின் Daemon.எனும் ஏவலாள்
2. பின்னர் கட்டளைகளை இயக்க இணைப்பாளரின் Daemon.எனும் ஏவலாளுடன் தொடர்பு கொள்கின்ற ஒருஇணைப்பாளரின் வாடிக்கையாளர்.
3. தொலைதூரத்தில் இருந்தும் இணைப்பாளரின் Daemon.எனும் ஏவலாளுடன் தொடர்புகொள்வதற்கான ஒரு REST API.

இணைப்பாளர் வாடிக்கையாளர் (Docker Client)
இணைப்பாளரின் இறுதிப் பயனராக தொடர்புகொள்வது இணைப்பாளரின் வாடிக்கையாளர் ஆகும். இது இணைப்பாளருக்கான பயனாளரின் இடைமுகம்(UI) எனக்கொள்க. எடுத்துக்காட்டாக, நாம் ஏதேனும் பணியை செய்யும் போது…
இணைப்பாளரின் வாடிக்கையாளருடன் தொடர்பு கொள்வோம், அந்த தொடர்பானது நம்முடைய வழிமுறைகளை இணைப்பாளரின் Daemon.எனும் ஏவலாளுக்கு தெரிவிக்கின்றது.

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

இணைப்பாளர் கோப்பு( Dockerfile)
இணைப்பாளரின் கோப்பு என்பது இணைப்பாளரின் imageஐ உருவாக்குவதற்கான கட்டளைகளை எழுதுகின்ற இடமாகும்.இந்த கட்டளைகள் பின்வருமாறு இருக்கலாம்:
• RUN apt-get y install some-package: மென்பொருள் தொகுப்பை நிறுகைசெய்திட
• EXPOSE 8000: ஒரு வாயிலை(port) வெளிப்படுத்த
• ENV ANT_HOME /usr/local/apache-ant:சூழல் மாறியை கடத்த
என்றவாறு இருக்கலாம். நம்முடைய Dockerfile கட்டமைக்கப்பட்டதும், அதில் இருந்து ஒரு imageஐ உருவாக்க, docker build எனும் கட்டளையைப் பயன்படுத்தலாம்.

இணைப்பாளர் image
இவை நம்முடைய Dockerfile இல் எழுதப்பட்ட கட்டளைவரிகளின் தொகுப்பி லிருந்து நாம் உருவாக்குகின்ற படிக்க மட்டுமேயான மாதிரிபலகங்கள் (templates )ஆகும். நம்மால் தொகுக்கப்பட்ட பயன்பாடும் அதன் சார்புநிலைகளும் எவ்வாறு இருக்க வேண்டும் என்பதையும் தொடங்கப்படும்போது என்ன செயல்முறைகள் இயங்க வேண்டும் என்பதையும் இவை(images) வரையறுக்கின்றன.
இணைப்பாளரின் image ஆனது ஒரு இணைப்பாளரின் கோப்பினைப்( Dockerfile) பயன்படுத்தி கட்டமைக்கப்பட்டுள்ளது. Dockerfile இல் உள்ள ஒவ்வொரு கட்டளையும் image இற்கு ஒரு புதிய “அடுக்கினை(layer)” சேர்க்கிறது, (images)இன் கோப்பு முறைமையின் ஒரு பகுதியைக் குறிக்கின்ற அடுக்குகள் அதற்குக் கீழே உள்ள அடுக்கினைச் சேர்க்கின்றது அல்லது மாற்றுகின்றது. இணைப்பாளரின் இலகுரக சக்திவாய்ந்த கட்டமைப்பிற்கு இந்த அடுக்குகள் மிக முக்கியமாகும். இதை அடைய இணைப்பாளரின் ஒன்றிணைப்பு கோப்பு அமைவினை பயன்படுத்திகொள்கிறது:

இணைப்பாளரின் ஒன்றிணைப்பு கோப்பு அமைவுகள்(Union File Systems)
இணைப்பாளர் ஒரு imageஐ உருவாக்க ஒன்றிணைப்பு கோப்பு அமைவுகளைப் பயன்படுத்திகொள்கின்றது. ஒன்றிணைப்பு கோப்பு அமைவு என்பது அடுக்கி வைக்கக்கூடிய கோப்பு அமைவாக இருக்ககூடும் என தவறாக நினைக்கலாம், அதாவது தனித்தனி கோப்பு முறைமைகளின் (கிளைகள் என அழைக்கப்படும்) கோப்புகள் கோப்பகங்கள் வெளிப்படையான முறையில் மேலெழுதப்பட்டு ஒரு கோப்பு முறைமையை உருவாக்கலாம்.
மேலெழுதப்பட்ட கிளைகளுக்குள் ஒரே பாதையைக் கொண்ட கோப்பகங்களின் உள்ளடக்கங்கள் ஒற்றையாக இணைக்கப்பட்ட கோப்பகமாகக்காணப்படுகின்றன, இது ஒவ்வொரு அடுக்கின் தனித்தனி நகல்களை உருவாக்குகின்ற தேவையைத் தவிர்க்கிறது. மாறாக, அவை அனைத்தும் ஒரே வளத்திற்கான சுட்டிகளை வழங்குகின்றன; சில அடுக்குகளை மாற்றியமைக்க வேண்டியிருக்கும் போது, அது ஒரு நகலை உருவாக்கி, உள்ளூர் நகலை மாற்றுகின்றது, அசல் அப்படியே மாறாமல் இருக்கின்றது. உண்மையில் எழுதுவதை அனுமதிக்காமல் கோப்பு முறைமைகள் எழுதக்கூடியதாகத் தோன்றும். (வேறுவிதமாகக் கூறினால், “எழுதுவதின்நகல்(copy-on-write)” அமைவாகும்.)
இந்த அடுக்கு அமைவுகள் இரண்டு முக்கிய நன்மைகளை வழங்குகின்றன:
1. கட்டணமற்ற-பதில்நகல்(Duplication-free): புதிய கொள்கலன்கணினியை உருவாக்கி இயக்க ஒவ்வொரு முறையும் ஒரு imageஐப் பயன்படுத்தும் போது முழுமையான கோப்புகளின் தொகுப்பை நகலெடுப்பதைத் தவிர்க்க அடுக்குகள் உதவுகின்றன, இதனால் இணைப்பாளர் ஆனது கொள்கலன்கணினிகளை மிக விரைவாகவும் மலிவாகவும் உடனடியாக உருவாக்குகிறது.
2. அடுக்கினைதனித்தனியாக பிரித்தல்(Layer segregation): மாற்றத்தை செய்வது மிக விரைவாக இருக்கும் – ஒரு imageஐ மாற்றும்போது, அவ்வாறு மாற்றம் செய்யப்பட்ட அடுக்கிற்கு மட்டுமே இணைப்பாளர் புதுப்பிப்புகளை பரப்புகிறது.

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

இணைப்பாளர் கொள்கலன்கணினிகள்(Docker Containers)
ஒரு இணைப்பாளர் கொள்கலன்கணினிஎன்பது, மேலே விவாதிக்கப்பட்டபடி, ஒரு பயன்பாட்டின் மென்பொருளை ஒரு கண்ணுக்கு தெரியாத பெட்டியில், இயக்க முறைமை, பயன்பாட்டின் குறிமுறைவரிகள், இயக்க நேரம், கணினி கருவிகள், கணினி நூலகங்கள் போன்ற பலவற்றை உள்ளடக்கியஅந்த பயன்பாடு இயங்கத் தேவையான அனைத்தையும் உள்ளடக்கியதாகும். . இணைப்பாளர் கொள்கலன்கணினிகள் இணைப்பாளரின் (images)களிலிருந்து கட்டமைக்கப் பட்டுள்ளன. இவை(images) படிக்க மட்டுமே என்பதால், இணைப்பாளர் ஒரு கொள்கலன் கணினியை உருவாக்க இந்தimageஇன் படிக்க-மட்டுமேயான( read-only) கோப்பு அமைவில் படிக்கவும்-எழுதவும்( read-write) ஆகிய கோப்பு அமைவாக கூடுதலாக சேர்க்கிறது.
மேலும், கொள்கலன்கணினியை உருவாக்கி, இணைப்பாளர் ஒரு பிணைய இடைமுகத்தை உருவாக்குகிறது, இதனால் கொள்கலன் கணினி உள்ளூர் புரவலர் கணினியுடன் தொடர்புகொள்ள முடியும், கிடைக்கக்கூடிய IP முகவரியை கொள்கலன்கணினியுடன் இணைக்கிறது இந்த(images)ஐ வரையறுக்கும்போது பயன்பாட்டை இயக்க குறிப்பிட்ட செயல்முறையை செயல்படுத்துகிறது.
ஒரு கொள்கலன் கணினியை வெற்றிகரமாக உருவாக்கியதும், மாற்றங்களைச் செய்யாமல் எந்தச் சூழலிலும் அதை இயக்கலாம்.
“containers” என்பதன் மீது இடம்சுட்டியைவைத்து சுட்டியைஇருமுறை சொடுக்குக
அச்சச்சோ! இது நிறைய நகரும் பாகங்களை கொண்டுள்ளதே. அவைகளை பற்றி நாம் ஒன்றும் தெரிந்துகொள்ளவில்லையே ! பரவாயில்லை இப்போது தெரிந்து கொள்வோம். ஒரு கொள்கலன் கணினி உண்மையில் எவ்வாறு செயல்படுத்தப் படுகிறது என்பது எப்போதும் ஆர்வமாக தெரிந்துகொள்ளவிருக்கின்ற ஒன்றாகும், குறிப்பாக ஒரு கொள்கலன்கணினியைச் சுற்றி எந்தவிதமான சுருக்க உள்கட்டமைப்பு எல்லையும் இல்லை. இதனை குறித்து நிறைய படித்து அறிந்த பிறகு, இவையனைத்தும் அர்த்தமுள்ளதாக இருப்பதை தெரிந்துகொள்ளலாம்,
“container” என்ற சொல் உண்மையில் ஒரு “கொள்கலன் கணினியை” காட்சிப் படுத்த சில வேறுபட்ட வசதிகள் எவ்வாறு இணைந்து செயல்படுகின்றன என்பதை விவரிக்கின்ற ஒரு சுருக்கமான கருத்தமைவாகும். இப்போது அவற்றை விரைவாககாண்போம்:
1) பெயர்வெளிகள்(Namespaces)
பெயர்வெளிகளானவை கொள்கலன் கணினிகளுக்கு அடிப்படையான லினக்ஸ் அமைப்பின் சொந்த பார்வையை வழங்குகின்றன, கொள்கலன் கணினியை காண்பதையும் அணுகுவதையும் இவை கட்டுப்படுத்துகின்றன. ஒரு கொள்கலன் கணினியை இயக்கும்போது, குறிப்பிட்ட கொள்கலன்கணினி பயன்படுத்துகின்ற பெயர்வெளிகளை இணைப்பாளர் உருவாக்குகிறது.
உருவாக்கமையத்தில் பல்வேறு வகையான பெயர்வெளிகள் உள்ளன, அவைகளை இணைப்பாளர் பயன்படுத்திகொள்கின்றன, எடுத்துக்காட்டாக:
அ.NET: கணினியின் பிணைய அடுக்கின் (எ.கா. அதன் சொந்த வலைபின்னலின் சாதனங்கள், IP முகவரிகள், IP வழிசெலுத்தி அட்டவணைகள், /proc/net directory, வாயிலின் எண்கள் (port numbers) போன்றவை) அதன் சொந்த பார்வையுடன் ஒரு கொள்கலன்கணினியை வழங்குகிறது.
ஆ.PID: PID என்பது செயல்முறை சுட்டியைக் குறிக்கிறது. கணினியில் என்னென்ன செயல்முறைகள் இயங்குகின்றன என்பதைச் சரிபார்க்க எப்போதாவது கட்டளை வரியில் ps aux ஐ இயக்கியிருந்தால், “PID” என்ற நெடுவரிசையைப் காணலாம். PID பெயர்வெளி, “அனைத்து செயல்முறைகளின் மூதாதையர்” என்ற ஒரு சுதந்திரமான init (PID 1) உட்பட, அவை காணக்கூடிய தொடர்புகொள்ளக்கூடிய செயல்முறைகளின் சொந்த நோக்குடைய பார்வையை கொள்கலன் கணினிகளுக்கு வழங்குகிறது.
இ.MNT: இது ஒரு கொள்கலன்கணினிக்கு கணினியில் உள்ள “பொறுத்து தல்கள் (mounts)” பற்றிய அதன் சொந்த பார்வையை அளிக்கிறது. எனவே, வெவ்வேறு பொறுத்துதல்(mount) பெயர்வெளிகளில் உள்ள செயல்முறைகள் கோப்பு முறைமை படிநிலையின் வெவ்வேறு காட்சிகளைக் கொண்டுள்ளன.
ஈ.UTS: UTS என்பது UNIX இன் நேரபகிர்வுஅமைவாகும். கணினி அடையாளங் காட்டிகளை (அதாவது புரவலர்பெயர், களப்பெயர் போன்றவை) அடையாளம் காண இது ஒரு செயல்முறையை அனுமதிக்கிறது. மற்ற கொள்கலன்கணினிகள் புரவலர் கணினியின் அமைவுகள் ஆகியவற்றிலிருந்து சுதந்திரமான கொள்கலன் கணினிகள் தங்களுடைய சொந்த புரவலர் பெயரையும் NIS களப்பெயரையும் வைத்திருக்க UTS அனுமதிக்கிறது.
உ.IPC: IPC என்பது ஒரு இடைநிலை செயலாக்க தொடர்பாளராகும். ஒவ்வொரு கொள்கலன்கணினியிலும் இயங்குகின்ற செயல்முறைகளுக்கு இடையில் IPC ஆதாரங்களைத் தனிமைப்படுத்துவதற்கு IPC இன் பெயர்வெளி பொறுப்பாகும்.
ஊ.USER: இந்த பெயர்வெளி ஒவ்வொரு கொள்கலன்கணினியில் உள்ள பயனர்களை தனிமைப்படுத்த பயன்படுகிறது. புரவலர் கணினிஅமைவுடன் ஒப்பிடும்போது, கொள்கலன்கணினிகள் uid என சுருக்கமாக அழைக்கப் பெறுகின்ற பயனரின் சுட்டி gid என சுருக்கமாக அவைக்கப்பெறுகின்ற குழுவின் சுட்டி ஆகிய வரம்புகளின் வித்தியாசமான பார்வையைப் பெற அனுமதிப்பதன் மூலம் இது செயல்படுகிறது. இதன் விளைவாக, ஒரு செயல்முறையின் uid , gid ஆகியவை ஒரு பயனர் பெயர்வெளியின் உள்ளேயும் வெளியேயும் வேறுபட்டிருக்கலாம், இது ஒரு கொள்கலன்கணினிக்குள் வழிசெலுத்தியின் சிறப்புரிமையை தியாகம் செய்யாமல் ஒரு கொள்கலன்கணினிக்கு வெளியே சலுகை இல்லாத பயனரைக் கொண்டிருக்க ஒரு செயல்முறையை அனுமதிக்கிறது.
இணைப்பாளர் ஆனது தனிமைப்படுத்தி ஒரு கொள்கலன்கணினியை உருவாக்கத் தொடங்குவதற்காக இந்தப் பெயர்வெளிகளை ஒன்றாகப் பயன்படுத்தி கொள்கின்றது. அடுத்த வசதி கட்டுப்பாட்டு குழுக்கள் என்று அழைக்கப்படுகிறது.
2) கட்டுப்பாட்டு குழுக்கள்
கட்டுப்பாட்டு குழுக்கள் (cgroups என்றும் அழைக்கப்படுகிறது) என்பது ஒரு லினக்சின்உருவாக்கமையத்தின் வசதியாகும், இது செயல்முறைகளின் தொகுப்பின் வள பயன்பாட்டை (CPU, நினைவகம், வட்டு I/O, வலைபின்னல் போன்றவை) தனிமைப்படுத்தி, முன்னுரிமை அளிக்கிறது. இந்த அர்த்தத்தில், இணைப்பாளர் ஆனது கொள்கலன்கணினிகள் தங்களுக்குத் தேவையான ஆதாரங்களை மட்டுமே பயன்படுத்துகின்றன என்பதை ஒரு cgroup உறுதி செய்கிறது – மேலும், தேவைப்பட்டால், ஒரு கொள்கலன்கணினி பயன்படுத்தக் கூடிய வளங்களுக்கு வரம்புகளை அமைக்கிறது. ஒரு கொள்கலன்கணினி அந்த வளங்களில் ஒன்றுகூட தீர்ந்துவிடாமல் முழு அமைப்பையும் கீழே கொண்டு வருவதை Cgroups உறுதி செய்கிறது.
கடைசியாக, ஒன்றிணைப்பு கோப்பு அமைவுகள் இணைப்பாளர் பயன்படுத்திகொள்கின்ற மற்றொரு வசதியாகும்:
3) தனிமைப்படுத்தப்பட்ட ஒன்றிணைப்பு கோப்பு முறைமை:
இதுகுறித்து மேலே இணைப்பாளரின்imageபிரிவில் விவரிக்கப்பட்டுள்ளது
இணைப்பாளர் கொள்கலன்கணினியில் இதுவே உள்ளது (நிச்சயமாக, செயல்படுத்தும் விவரங்களில் பிசாசு போன்றுஉள்ளது — பல்வேறு கூறுகளுக்கு இடையிலான தொடர்புகளை எவ்வாறு நிர்வகிப்பது போன்றவை).
இணைப்பாளரின் எதிர்காலம்: வருங்காலத்தில் இணைப்பாளரும் VM களும் இணைந்து செயல்படுதாக இருக்கக்கூடும்
இணைப்பாளர் நிச்சயமாக தற்போது அதிக முக்கியத்துவம்ப் பெற்றாலும், அது VM களுக்கு உண்மையான அச்சுறுத்தலாக மாறாது. கொள்கலன்கணினிகள் தொடர்ந்து பயன்பாட்டில்இடம் பெறும், ஆனால் VMகள் இன்னும் சிறப்பாகப் பொருத்தமாக இருக்கின்ற பல பயன்பாடுகள் உள்ளன.
எடுத்துகாட்டாக, சேவையகங்களில் பல்வேறு பயன்பாடுகளை இயக்க வேண்டும் என்றால், VMகளைப் பயன்படுத்துவது அர்த்தமுள்ளதாக இருக்கும். மறுபுறம், ஒரு பயன்பாட்டின் பல *நகல்களை* இயக்க வேண்டும் என்றால், கட்டாயமாக இணைப்பாளர்(Docker) மிகப்பயனுள்லதாக அமைகின்றது.
மேலும், கொள்கலன் கணினிகள் நம்முடைய பயன்பாட்டை மிகவும் அதிக செயல்பாட்டிற்கேற்பத் தனித்தனிப் பகுதிகளாகப் பிரித்து, உருவாக்க அனுமதிக்கின்ற அதே வேளையில், நிர்வகிப்பதற்கு அதிக எண்ணிக்கையிலான பகுதிகள் உள்ளன, இது கட்டுக்கடங்காமல் போகலாம்.
இணைப்பாளர் கொள்கலன்கணினிகளில் பாதுகாப்பு என்பது கவலைக்குரிய பகுதியாகும் – கொள்கலன்கணினிகள் ஒரே உருவாக்கமயத்தினைப் (kernel) பகிர்ந்து கொள்வதால், கொள்கலன்கணினிகளுக்கு இடையே உள்ள தடை மெல்லியதாக உள்ளது. ஒரு முழு VM ஆனது புரவலர் மீமேற்பார்வையாருக்கு மட்டுமே மீயழைப்புகளை வழங்க முடியும், ஒரு இணைப்பாளர் கொள்கலன்கணினி ஆனது புரவலர் கணினியின் உருவாக்கமையைத்திற்கு அமைவு அழைப்புகளை உருவாக்க முடியும், இது தாக்குதலுக்கான பெரிய பரப்பளவை உருவாக்குகிறது. பாதுகாப்பு மிகவும் முக்கியமானதாக இருக்கும் போது, மேம்படுத்துநர்கள் VMகளை தேர்வு செய்ய வாய்ப்புள்ளது, அவை சுருக்கப்பட்ட வன்பொருளால் தனிமைப்படுத்தப் படுகின்றன – இதில் ஒருவருக்கொருவர் தலையிடுவது மிகவும் கடினம்.
நிச்சயமாக, கொள்கலன்கணினிகளின் உற்பத்தியில் அதிக வெளிப்பாடு பயனர்களிடமிருந்து கூடுதல் ஆய்வுக்கு உட்படுத்தப்படுவதால் பாதுகாப்பு மேலாண்மை போன்ற சிக்கல்கள் உருவாகும். இப்போதைக்கு, கொள்கலன்கணினிகள் vs. VMகள் பற்றிய விவாதமானது, அவற்றை அன்றாடம் பயன்படுத்திகொள்கின்ற பயன்பாடுகளை மேம்படுத்திடுகின்ற மக்களுக்கு மிகவும் சிறந்தது!

%d bloggers like this: