புதிதாக ஒரு டோக்கர் படத்தை உருவாக்குதல்

Creating Docker Image From Scratch



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

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







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



ஒரு டோக்கர் படத்தின் உடற்கூறியல்

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



பயன்பாடுகள் மென்பொருள் அடுக்குகளிலிருந்து தயாரிக்கப்படுகின்றன. ஒரு வேர்ட்பிரஸ் கொள்கலன் படம் ஒரு httpd கொள்கலன் படத்தைப் பயன்படுத்தி கட்டப்பட்டுள்ளது, இது உபுண்டு படத்தின் மேல் கட்டப்பட்டுள்ளது. ஒரு புதிய படம் கட்டப்பட்ட படம் டோக்கர் சொற்களில் PARENT IMAGE என அழைக்கப்படுகிறது. டோக்கர்ஃபைலில் (டோக்கர்ஃபைல் என்றால் என்ன என்பதை நாம் சிறிது நேரம் கழித்து தெரிந்து கொள்வோம்), இந்த பெற்றோர் படம் கீழே காட்டப்பட்டுள்ளபடி கோப்பின் மேல் குறிப்பிடப்பட்டுள்ளது:





உபுண்டுவிலிருந்து: 18.04
## மீதமுள்ள டாக்கர்ஃபைல்

இந்த Dockerfile செயல்படுத்தப்படும் போது உங்கள் விண்ணப்பத்தை ஒரு Docker படமாக (ஒரு பைனரி வகை) மாற்றுகிறது, பின்னர் நீங்கள் ஒரு பதிவேட்டில் தள்ளலாம், அங்கிருந்து புதிய கொள்கலன்களை உருவாக்கலாம். இருப்பினும், அவர்கள் அனைவரும் உபுண்டு: 18.04 ஐ அவர்களின் அடிப்படை உருவமாக வைத்திருப்பார்கள், மேலும் அது அவர்கள் இயங்கும் உபுண்டு அமைப்பு போல் இயங்குகிறது.

ஒரு புதிய டோக்கர் படத்தை இழுக்க முயற்சிக்கும்போது இதை நீங்கள் கவனித்திருக்கலாம்.



புதிதாக டோக்கர் படத்தை உருவாக்குதல்

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

இந்த காரணத்திற்காக, அடிப்படை படமாக அறியப்பட்டதை உருவாக்க விரும்புகிறோம். இது எதற்கும் மேல் கட்டப்படவில்லை. இந்த அடுக்கு வேறு எதற்கும் மேல் கட்டப்படவில்லை என்பதைக் குறிக்க கீவேர்ட் கீறல் பயன்படுத்தப்படுகிறது. அது போல:

புதிதாக இருந்து
## மீதமுள்ள Dcokerfile

நாங்கள் முதலில் ஒரு எளிய ஹலோ-வேர்ல்ட் அப்ளிகேஷனை உருவாக்கி, பின்னர் மீதமுள்ள டோக்கர்ஃபைல் என்னவாக இருக்கும் என்பதைக் கண்டுபிடிப்போம். புரவலன் அமைப்பு உபுண்டு: 18.04 எல்டிஎஸ் மற்றும் நாங்கள் சோதனைக்கு டோக்கர் பதிப்பு 17.12.1-சிஇயைப் பயன்படுத்துகிறோம்.

நிலையான பைனரியை உருவாக்குதல்

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

ஆனால் பெரும்பாலான உயர் நிலை பயன்பாடுகள் நிறைய கணினி நூலகங்களைப் பொறுத்தது (போன்றவை) glibc, musl, klibc போன்றவை ) மற்றும் பைதான் அல்லது Node.js அல்லது ஜாவா இயக்க நேரம் போன்ற நிறைய இயக்க நேர சார்புகள். பைனரி பயன்பாட்டிற்குள் அனைத்து நூலகங்களும் இல்லை, ஆனால் அது செயல்படத் தொடங்கும் போது அது ஹோஸ்ட் இயங்குதளத்திலிருந்து அந்த நூலகங்களை அழைக்கிறது.

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

MyDockerImage என்ற கோப்புறையை உருவாக்கி அதன் உள்ளே hello.cc என்ற கோப்பை உருவாக்குவதன் மூலம் தொடங்குவோம்.

$mkdirMyDockerImage
$குறுவட்டுMyDockerImage
$தொடுதல்வணக்கம். சிசி

உங்களுக்கு பிடித்த உரை எடிட்டரைப் பயன்படுத்தி hello.cc ஐத் திறந்து பின்வரும் வரிகளை அதற்குள் சேர்க்கவும்.

#சேர்க்கிறது
நேம்ஸ்பேஸ் எஸ்டிடியைப் பயன்படுத்துதல்;
intமுக்கிய(){
செலவு<< 'வணக்கம்! இந்த செய்தி ஒரு கொள்கலனில் இருந்து வருகிறது n';
திரும்ப 0;

}

இது ஒரு எளிய C ++ நிரலாகும், இது வணக்கம்! இந்த செய்தி…

முன்னர் விவாதிக்கப்பட்ட காரணங்களுக்காக, இதை நிலையான கொடியைப் பயன்படுத்தி தொகுப்போம். கம்பைலர் பயன்படுத்தப்படுகிறது g ++ (Ubuntu 7.3.0-16ubuntu3) 7.3.0.

நிரலைத் தொகுக்க, அதே கோப்பகத்தில் பின்வரும் கட்டளையை இயக்கவும்:

$ ஜி++ -ஓ வணக்கம்-நிலையானவணக்கம்.டிசி

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

$./வணக்கம்

இப்போது நாங்கள் இந்த எளிய திட்டத்தை கட்டுப்படுத்த தயாராக உள்ளோம்.

டாக்கர்ஃபைல்

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

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

$தொடுதல்டாக்கர்ஃபைல்

உங்களுக்கு பிடித்த உரை எடிட்டருடன் அதைத் திறந்து, பின்வரும் வரிகளை அதில் எழுதுங்கள்:

கீறல் இருந்து
வணக்கம் சேர்க்கவும்/
சிஎம்டி['/வணக்கம்']

கீறல் ஒரு பெற்றோர் படம் அல்ல. மாறாக படம் வேறு எந்த படத்தின் மேல் கட்டப்படவில்லை என்பதை டோக்கரை குறிக்கிறது. இது புதிதாக கட்டப்பட்டது. ADD கட்டளை தற்போதைய கோப்பகத்திலிருந்து | _+_ | என்ற நிலையான பைனரியை எடுத்து படக் கோப்பின் ரூட் கோப்பகத்தில் சேர்க்கும். இந்த படத்தை அடிப்படையாகக் கொண்ட ஒரு கொள்கலனை நாங்கள் இறுதியாக இயக்கும்போது, ​​ஹலோ இயங்கக்கூடியது ரூட் கோப்பகத்திற்குள் | _+_ |

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

ஐ அழைப்பதன் மூலம் படத்தை உருவாக்கலாம் கப்பல்துறை உருவாக்கம் டோக்கர்ஃபைலின் உள்ளடக்கங்களைச் சென்று படத்தை உருவாக்கும் கட்டளை. பின்வரும் கட்டளையை Dockerfile மற்றும் இயங்கக்கூடிய பைனரி போன்ற கோப்பகத்தில் இயக்கவும்.

$கப்பல்துறை உருவாக்கம்-டேக்வணக்கம் .

தி - டேக் ஹலோ கொடி படத்தின் பெயரை அமைக்கிறது வணக்கம் மற்றும் புள்ளி ( . ) இறுதியில் சொல்கிறது கப்பல்துறை உருவாக்கம் Dockerfile மற்றும் தொடர்புடைய உள்ளடக்கங்களுக்கான தற்போதைய கோப்பகத்தைப் பார்க்க.

டோக்கர் கொள்கலனை இயக்குகிறது

நாம் இப்போது உருவாக்கிய படம் படங்களின் பட்டியலில் காட்டப்படுகிறதா என சரிபார்க்க, இயக்கவும்:

$டோக்கர் படங்கள்

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

$டோக்கர் ரன் ஹலோ

அவ்வளவுதான்! புதிதாக உங்கள் முதல் சிறிய கொள்கலனை உருவாக்கியுள்ளீர்கள்.

பிற விருப்பங்கள்

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

பயன்படுத்துவதன் மூலம் அவற்றை உங்கள் பெற்றோர் படமாகப் பயன்படுத்துங்கள் ஆல்பைனிலிருந்து: சமீபத்தியது சிறிய படங்களையும் விளைவிக்கும். அடிப்படை படங்கள் 2-5 எம்பி அளவு மட்டுமே என்பதால். டோக்கர் தொடர்பான தலைப்பு ஏதேனும் இருந்தால் எங்களுக்குத் தெரியப்படுத்துங்கள். நீங்கள் எங்களை அணுகலாம் ட்விட்டர் , முகநூல் அல்லது மின்னஞ்சல் மூலம் எங்களுக்கு குழுசேரவும்.