మొదటి నుండి డాకర్ చిత్రాన్ని సృష్టించడం

Creating Docker Image From Scratch



ఏ ఇతర కంటైనరైజేషన్ టెక్నాలజీ కంటే డాకర్ యొక్క ప్రధాన ప్రయోజనం ఏమిటంటే, డెకర్ డెవలపర్లు మరియు వారి అప్‌స్టాక్ అప్లికేషన్‌లను లక్ష్యంగా చేసుకోవడం. సరైన కంటైనరైజేషన్ టెక్నాలజీలు ఇష్టపడతాయి LXC , మండలాలు మరియు జైళ్లు కార్యకలాపాల దృక్పథం నుండి లక్ష్యంగా ఉన్నాయి, లేదా, సరళంగా చెప్పాలంటే, ఈ ప్లాట్‌ఫారమ్‌లు క్లౌడ్‌లో నడుస్తున్న వర్చువల్ మెషీన్‌లకు ప్రత్యామ్నాయం. ఎక్కడ, డాకర్ ప్యాకేజీలు మరియు అమలు చేయగల బైనరీలకు ప్రత్యామ్నాయం.

వదులుగా చెప్పాలంటే, డాకర్ మరింత ఎక్కువ సార్వత్రిక ప్యాకేజీ మేనేజర్‌గా మారుతున్నాడు, ఇది అన్ని లైనక్స్ ప్లాట్‌ఫారమ్‌లలో పనిచేస్తుంది. డెవలపర్లు ఎదుర్కొంటున్న పూర్తిగా భిన్నమైన సమస్యను పరిష్కరించడానికి ఇది కంటైనర్లను తీసుకొని వాటిని ఉపయోగిస్తుంది. సమస్య ఏమిటంటే డెవలపర్లు తమ డెస్క్‌టాప్ ఆపరేటింగ్ సిస్టమ్‌ని (విండోస్, మాకోస్ లేదా లైనక్స్ వంటి టన్ను డెస్క్‌టాప్ సంబంధిత ప్యాకేజీలతో) అప్లికేషన్‌లను వ్రాయడానికి ఉపయోగిస్తారు. వారు వ్రాసే అప్లికేషన్ డెవలపర్ ల్యాప్‌టాప్ కంటే పూర్తిగా భిన్నమైన కొన్ని లైనక్స్ పంపిణీతో సర్వర్‌లో పూర్తిగా భిన్నమైన ఆపరేటింగ్ సిస్టమ్‌పై తరచుగా నడుస్తుంది.







డాకర్‌తో ఆలోచన ఏమిటంటే, మీ అప్లికేషన్ డాకర్ ఇమేజ్‌గా ప్యాక్ చేయబడుతుంది. ఈ చిత్రాన్ని తీసి మీ కోసం కంటైనరైజ్డ్ అప్లికేషన్‌గా అమలు చేయడం డాకర్ యొక్క పని. కంటైనర్‌గా ఉండటం అంటే అప్లికేషన్ మరియు దాని డిపెండెన్సీలు వివిక్త వాతావరణంలో నడుస్తాయి, ఇది డెవలపర్ ల్యాప్‌టాప్ మరియు ప్రొడక్షన్ సర్వర్‌కి పూర్తిగా భిన్నంగా ఉండవచ్చు. వారిద్దరూ డాకర్‌కు మద్దతు ఇచ్చేంత వరకు, వారిద్దరూ ఒకే అప్లికేషన్‌ను సరిగ్గా ఒకే విధంగా అమలు చేయవచ్చు.



అనాటమీ ఆఫ్ ఎ డాకర్ ఇమేజ్

ముందుగా చెప్పినట్లుగా, ఒక డాకర్ యాప్ అంగీకరించిన పర్యావరణంపై నడుస్తుంది. ఇప్పుడు ప్రశ్న ఏమిటంటే మనం ఆ వాతావరణాన్ని ఎలా సృష్టించాలి? చాలా అప్లికేషన్ ఇమేజ్‌లు డాకర్ బేస్ ఇమేజ్‌ని దిగుమతి చేస్తాయి మరియు దాని పైన వాటి అప్లికేషన్‌ను నిర్మిస్తాయి.



అప్లికేషన్‌లు సాఫ్ట్‌వేర్ పొరల నుండి తయారు చేయబడ్డాయి. ఒక వర్డ్‌ప్రెస్ కంటైనర్ ఇమేజ్ httpd కంటైనర్ ఇమేజ్‌ని ఉపయోగించి నిర్మించబడింది, ఇది ఉబుంటు ఇమేజ్ పైన నిర్మించబడింది. డాకర్ పరిభాషలో పేరెంట్ ఇమేజ్ అని పిలువబడే ఒక కొత్త చిత్రం నిర్మించబడిన చిత్రం. డాకర్‌ఫైల్‌లో (డాకర్‌ఫైల్ అంటే ఏమిటో మేము తెలుసుకుంటాము, కొంచెం తరువాత), ఈ పేరెంట్ చిత్రం ఫైల్ పైభాగంలో క్రింద చూపిన విధంగా పేర్కొనబడింది:





ఉబుంటు నుండి: 18.04
## మిగిలిన డాకర్‌ఫైల్

ఈ డాకర్‌ఫైల్ అమలు చేసినప్పుడు మీ అప్లికేషన్‌ను డాకర్ ఇమేజ్‌గా (ఒక రకమైన బైనరీ) మారుస్తుంది, ఆపై మీరు రిజిస్ట్రీకి నెట్టవచ్చు, దాని నుండి వేరే కంటైనర్‌లను సృష్టించడానికి దాన్ని లాగవచ్చు. ఏదేమైనా, వారందరికీ ఉబుంటు: 18.04 వారి బేస్ ఇమేజ్‌గా ఉంటుంది మరియు వారు నడుస్తున్న ఉబుంటు సిస్టమ్ లాగా నడుస్తుంది.

కొత్త డాకర్ ఇమేజ్‌ని లాగడానికి ప్రయత్నించినప్పుడు మీరు దీన్ని గమనించి ఉండవచ్చు.



స్క్రాచ్ నుండి డాకర్ చిత్రాన్ని సృష్టిస్తోంది

అసలు అప్లికేషన్ (ఇది కేవలం కొన్ని మెగాబైట్ల పరిమాణంలో ఉండవచ్చు) తీసుకురావడానికి ముందు ఎన్ని పొరలు లాగబడిందో ఇది చూపుతుంది.

ఈ కారణంగా, మేము బేస్ ఇమేజ్ అని పిలవబడే వాటిని సృష్టించాలనుకుంటున్నాము. ఇది దేనిపైనా నిర్మించబడలేదు. కీవర్డ్ స్క్రాచ్ ఈ పొర మరేదైనా పైన నిర్మించబడలేదని సూచించడానికి ఉపయోగించబడుతుంది. వంటి:

మొదటి నుండి
## మిగిలిన Dcokerfile

మేము మొదట ఒక సాధారణ హలో-వరల్డ్ అప్లికేషన్‌ను రూపొందిస్తాము మరియు మిగిలిన డాకర్‌ఫైల్ ఏమిటో తెలుసుకోండి. హోస్ట్ సిస్టమ్ ఉబుంటు: 18.04 LTS మరియు మేము ప్రయోగం కోసం డాకర్ వెర్షన్ 17.12.1-ce ని ఉపయోగిస్తున్నాము.

స్టాటిక్ బైనరీని సృష్టించడం

డాకర్ కంటైనర్లు అనేది మిగిలిన ఆపరేటింగ్ సిస్టమ్ నుండి వేరుచేయబడిన ప్రక్రియల సమాహారం. కెర్నల్‌తో మాత్రమే ప్రాసెస్ టచ్‌లో ఉంది. CPU లో ఈ ప్రక్రియలను షెడ్యూల్ చేయడం, మెమరీ నిర్వహణ మరియు కొన్ని ఇతర ప్రాథమిక బుకింగ్ కీప్ టాస్క్‌లకు కెర్నల్ బాధ్యత వహిస్తారు.

కానీ చాలా ఉన్నత స్థాయి అప్లికేషన్‌లు చాలా సిస్టమ్ లైబ్రరీలపై ఆధారపడి ఉంటాయి (వంటివి glibc, musl, klibc, మొదలైనవి ) మరియు పైథాన్ లేదా Node.js లేదా జావా రన్‌టైమ్ వంటి చాలా రన్‌టైమ్ డిపెండెన్సీలు. బైనరీ అప్లికేషన్ లోపల అన్ని లైబ్రరీలు అందుబాటులో లేవు, కానీ అది అమలు ప్రారంభించినప్పుడు అది హోస్ట్ ఆపరేటింగ్ సిస్టమ్ నుండి ఆ లైబ్రరీలను పిలుస్తుంది.

మేము మొదటి నుండి ఒక చిత్రాన్ని సృష్టించడానికి ప్రయత్నిస్తున్నందున, మేము ఈ అందాలను పొందలేము. కాబట్టి మా అప్లికేషన్ స్టాటిక్ ఫైల్ లేదా స్టాండ్ ఎలోన్ ఎగ్జిక్యూటబుల్ అయి ఉండాలి.

MyDockerImage అనే ఫోల్డర్‌ను సృష్టించడం మరియు దాని లోపల hello.cc ఫైల్‌ను సృష్టించడం ద్వారా ప్రారంభిద్దాం.

$mkdirMyDockerImage
$CDMyDockerImage
$స్పర్శహలో.సిసి

మీకు ఇష్టమైన టెక్స్ట్ ఎడిటర్‌ని ఉపయోగించి hello.cc ని తెరిచి, దానిలో కింది పంక్తులను జోడించండి.

#చేర్చండి
నేమ్‌స్పేస్ std ఉపయోగించి;
intప్రధాన(){
ఖరీదు<< 'హలో! ఈ సందేశం ఒక కంటైనర్ నుండి వస్తోంది n';
తిరిగి 0;

}

ఇది ఒక సాధారణ C ++ ప్రోగ్రామ్, ఇది హలో! ఈ సందేశం…

ముందు చర్చించిన కారణాల వల్ల, మేము దీనిని స్టాటిక్ ఫ్లాగ్‌ని ఉపయోగించి కంపైల్ చేస్తాము. కంపైలర్ ఉపయోగించబడుతోంది g ++ (ఉబుంటు 7.3.0-16బుంటు 3) 7.3.0.

ప్రోగ్రామ్‌ను కంపైల్ చేయడానికి, అదే డైరెక్టరీలో కింది ఆదేశాన్ని అమలు చేయండి:

$ గ్రా++ -ఓ హలో-స్టాటిక్హలో.DC

ఇది అదే డైరెక్టరీలో బైనరీ ఎక్జిక్యూటబుల్ ఫైల్ హలోను సృష్టిస్తుంది. అది మా స్టాటిక్ ఫైల్. టెర్మినల్‌లో ఫైల్ పేరును పేర్కొనడం ద్వారా అది ఉద్దేశించిన విధంగా నడుస్తుందో లేదో పరీక్షించండి.

$/హలో

ఇప్పుడు మేము ఈ సాధారణ ప్రోగ్రామ్‌ను కంటైనరైజ్ చేయడానికి సిద్ధంగా ఉన్నాము.

డాకర్ఫైల్

డాకర్‌ఫైల్ మీ అప్లికేషన్ ఫైల్‌లను (బైనరీలు, సోర్స్ ఫైల్‌లు మొదలైనవి) ఫైల్ సిస్టమ్ లేఅవుట్, ఎక్స్‌పోజ్డ్ పోర్ట్‌లు మొదలైన వివిధ కాన్ఫిగరేషన్ పారామితులతో పాటు వాటిని డాకర్ ఇమేజ్ ఫైల్‌గా తీసుకునే నియమాల సమితిని కలిగి ఉంటుంది. మీరు ఆ అప్లికేషన్‌ను అమలు చేయాలనుకునే ఎవరితోనైనా ఇమేజ్ ఫైల్‌ను షేర్ చేయవచ్చు.

మేము డాకర్‌ఫైల్ కోసం అందుబాటులో ఉన్న ప్రతి ఎంపికను త్రవ్వడం లేదు, బదులుగా మేము చాలా తక్కువ డాకర్‌ఫైల్ వ్రాస్తాము. మీ హలో ఎగ్జిక్యూటబుల్ ఉండే అదే డైరెక్టరీలో, అనే ఖాళీ ఫైల్‌ను సృష్టించండి డాకర్ఫైల్.

$స్పర్శడాకర్ఫైల్

మీకు ఇష్టమైన టెక్స్ట్ ఎడిటర్‌తో దీన్ని తెరిచి, దానికి కింది పంక్తులను వ్రాయండి:

మొదటి నుండి
ADD హలో/
CMD['/హలో']

గీతలు మాతృ చిత్రం కాదు. బదులుగా అది చిత్రం ఏ ఇతర చిత్రం పైన నిర్మించబడలేదని డాకర్‌ను సూచిస్తుంది. ఇది మొదటి నుండి నిర్మించబడింది. ADD కమాండ్ ప్రస్తుత డైరెక్టరీ నుండి | _+_ | అనే స్టాటిక్ బైనరీని తీసుకొని ఇమేజ్ ఫైల్ యొక్క రూట్ డైరెక్టరీకి జోడిస్తుంది. చివరకు మేము ఈ చిత్రం ఆధారంగా ఒక కంటైనర్‌ని అమలు చేసినప్పుడు, హలో ఎగ్జిక్యూటబుల్ రూట్ డైరెక్టరీలోనే | _+_ |

చివరగా, CMD లైన్‌లో స్ట్రింగ్ ఉంది /హలో ఈ చిత్రం నుండి ఒక కంటైనర్ సృష్టించబడినప్పుడల్లా ఈ స్ట్రింగ్ షెల్ కమాండ్‌గా అమలు చేయబడుతుంది, తద్వారా మేము మా కంటైనర్‌కు జోడించిన బైనరీ ఫైల్ మరియు మేము మా యాప్‌లో వ్రాసిన సందేశాన్ని ముద్రించండి.

ఆవాహన చేయడం ద్వారా చిత్రాన్ని నిర్మించుకుందాం డాకర్ బిల్డ్ డాకర్‌ఫైల్ కంటెంట్‌ల ద్వారా వెళ్లి చిత్రాన్ని రూపొందించే ఆదేశం. డాకర్‌ఫైల్ మరియు ఎక్జిక్యూటబుల్ బైనరీ వంటి డైరెక్టరీలో కింది ఆదేశాన్ని అమలు చేయండి.

$డాకర్ బిల్డ్-ట్యాగ్హలో .

ది - ట్యాగ్ హలో జెండా చిత్రం పేరును సెట్ చేస్తుంది హలో మరియు చుక్క ( . ) చివర్లో చెబుతుంది డాకర్ బిల్డ్ డాకర్‌ఫైల్ మరియు సంబంధిత విషయాల కోసం ప్రస్తుత డైరెక్టరీని చూడటానికి.

డాకర్ కంటైనర్ రన్నింగ్

మేము ఇప్పుడే సృష్టించిన చిత్రం చిత్రాల జాబితాలో కనిపిస్తుందో లేదో తనిఖీ చేయడానికి, అమలు చేయండి:

$డాకర్ చిత్రాలు

ఇతర చిత్రాలతో పోల్చినప్పుడు హలో చిత్రం ఎంత చిన్నదో గమనించండి. ఏదేమైనా, ఇది కంటైనర్‌గా అమలు చేయడానికి సిద్ధంగా ఉంది,

$డాకర్ రన్ హలో

అంతే! మీరు మొదటి నుండి మీ మొదటి కనీస కంటైనర్‌ను సృష్టించారు.

ఇతర ఎంపికలు

స్క్రాచ్ నుండి చిత్రాలను సృష్టించడం ఎల్లప్పుడూ ఒక ఎంపిక అయితే, ప్రజలు తరచుగా ఇతర తేలికపాటి లైనక్స్ డిస్ట్రోల నుండి చిత్రాలను సృష్టిస్తారు. ఉదాహరణకు ఆల్పైన్ మరియు బిజీబాక్స్ వంటి చిత్రాలు నిజంగా తేలికైన వాతావరణాలలో glibc కి బదులుగా ముస్ల్ వంటి చిన్న లైబ్రరీలతో ఉంటాయి.

ఉపయోగించడం ద్వారా వాటిని మీ మాతృ చిత్రంగా ఉపయోగించడం ఆల్పైన్ నుండి: తాజాది చిన్న చిత్రాలకు కూడా దారి తీస్తుంది. బేస్ ఇమేజ్‌లు కేవలం 2-5 MB సైజులో ఉంటాయి కాబట్టి. మేము తరువాత కవర్ చేయాలనుకుంటున్న ఏదైనా డాకర్ సంబంధిత అంశం ఉంటే మాకు తెలియజేయండి. మీరు మమ్మల్ని సంప్రదించవచ్చు ట్విట్టర్ , ఫేస్బుక్ లేదా ఇమెయిల్ ద్వారా మాకు సభ్యత్వాన్ని పొందండి.