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

నేమ్‌స్పేస్‌లు అంటే ఏమిటి?

కుబెర్నెట్స్ వంటి విస్తరణ సాధనాల మాదిరిగానే మీరు ఒకే సర్వర్‌లో అనేక విభిన్న ప్రక్రియలు మరియు అనువర్తనాలను అమలు చేసినప్పుడు, ప్రతి ప్రక్రియ వేరుచేయబడటం ముఖ్యం, ముఖ్యంగా భద్రత కోసం.

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

నేమ్‌స్పేస్‌లు కెర్నల్ స్థాయిలో ఈ ఐసోలేషన్‌ను సాధిస్తాయి. వేరే రూట్ డైరెక్టరీలో ఒక ప్రక్రియను నిరోధించే అప్లికేషన్ క్రూట్ ఎలా పనిచేస్తుందో అదేవిధంగా, నేమ్‌స్పేస్‌లు సిస్టమ్ యొక్క ఇతర అంశాలను వేరు చేస్తాయి. ఏడు నేమ్‌స్పేస్‌లు ఉన్నాయి:

  • సరిపోతుంది, లేదా mnt. చాలా పోలి ఉంటుంది chroot, మౌంట్ నేమ్‌స్పేస్ వాస్తవంగా ఫైల్ సిస్టమ్‌ను విభజిస్తుంది. ప్రత్యేక మౌంట్ నేమ్‌స్పేస్‌లలో నడుస్తున్న ప్రాసెస్‌లు వాటి మౌంట్ పాయింట్ వెలుపల ఫైల్‌లను యాక్సెస్ చేయలేవు. ఇది కెర్నల్ స్థాయిలో జరుగుతుంది కాబట్టి, రూట్ డైరెక్టరీని మార్చడం కంటే ఇది చాలా సురక్షితం chroot.
  • ప్రక్రియలు, లేదా pid. Linux లో, మొదటి ప్రక్రియలు PID 1 యొక్క పిల్లలుగా ఉత్పత్తి చేయబడతాయి, ఇది ప్రాసెస్ ట్రీ యొక్క మూలాన్ని ఏర్పరుస్తుంది. ప్రాసెస్ నేమ్‌స్పేస్ PID చెట్టు యొక్క ఒక శాఖను విచ్ఛిన్నం చేస్తుంది మరియు శాఖను మరింత ప్రాప్యత చేయడానికి అనుమతించదు. పిల్లల నేమ్‌స్పేస్‌లలోని ప్రాసెస్‌లు వాస్తవానికి బహుళ PID లను కలిగి ఉంటాయి: మొదటిది మాతృ వ్యవస్థ ఉపయోగించే గ్లోబల్ PID ని సూచిస్తుంది మరియు రెండవ PID చైల్డ్ ప్రాసెస్ ట్రీలోని PID ని సూచిస్తుంది, ఇది 1 నుండి పున ar ప్రారంభించబడుతుంది.
  • ప్రక్రియల మధ్య కమ్యూనికేషన్, లేదా ipc. ప్రక్రియలు ఒకదానితో ఒకటి నేరుగా మాట్లాడగలవా అని ఈ నేమ్‌స్పేస్ నియంత్రిస్తుంది.
  • నెట్‌వర్క్, లేదా net. ఈ నేమ్‌స్పేస్ ఒక ప్రక్రియ చూడగలిగే నెట్‌వర్క్ పరికరాలను నిర్వహిస్తుంది. అయితే, ఇది మీ కోసం స్వయంచాలకంగా దేనినీ సెట్ చేయదు – మీరు ఇంకా వర్చువల్ నెట్‌వర్క్ పరికరాలను సృష్టించాలి మరియు గ్లోబల్ నెట్‌వర్క్ ఇంటర్‌ఫేస్‌లు మరియు చైల్డ్ నెట్‌వర్క్ ఇంటర్‌ఫేస్‌ల మధ్య కనెక్షన్‌ను నిర్వహించాలి. డాకర్ వంటి కంటైనరైజేషన్ సాఫ్ట్‌వేర్ ఇది ఇప్పటికే గుర్తించబడింది మరియు మీ కోసం నెట్‌వర్క్‌ను నిర్వహించగలదు.
  • వినియోగదారు. ఈ నేమ్‌స్పేస్ మాతృ వ్యవస్థకు అసలు రూట్ యాక్సెస్ లేకుండా, ప్రక్రియను దాని స్వంత నేమ్‌స్పేస్‌లో “వర్చువల్ రూట్” కలిగి ఉండటానికి అనుమతిస్తుంది. అలాగే, ఇది UID మరియు GID సమాచారాన్ని వేరు చేస్తుంది, కాబట్టి ద్వితీయ నేమ్‌స్పేస్‌లు వాటి స్వంత వినియోగదారు కాన్ఫిగరేషన్‌లను కలిగి ఉంటాయి.
  • UTS. ఈ నేమ్‌స్పేస్ హోస్ట్ పేరు మరియు డొమైన్ సమాచారాన్ని తనిఖీ చేస్తుంది మరియు ప్రాసెస్‌లు వేర్వేరు పేర్లతో సర్వర్‌లలో నడుస్తున్నాయని అనుకునేలా చేస్తుంది.
  • Cgroup నేమ్‌స్పేస్‌లకు సమానమైన మరొక కెర్నల్ లక్షణం. ప్రక్రియల సమూహానికి వనరుల పరిమితులను (CPU, మెమరీ, డిస్క్ స్థలం, నెట్‌వర్క్ ట్రాఫిక్ మొదలైనవి) నిర్వచించడానికి Cgroups సిస్టమ్‌ను అనుమతిస్తాయి. కంటైనరైజ్డ్ అనువర్తనాలకు ఇది ఉపయోగకరమైన లక్షణం, కానీ ఇది నేమ్‌స్పేస్‌ల వంటి “సమాచార ఐసోలేషన్” ను ప్రదర్శించదు. ది cgroup నేమ్‌స్పేస్ ఇది ఒక ప్రత్యేకమైన విషయం మరియు ఒక ప్రక్రియ చూడగలిగే ఏ సమూహాలను మాత్రమే నియంత్రిస్తుంది మరియు దానిని నిర్దిష్ట సిగ్రూప్‌కు కేటాయించదు.

అప్రమేయంగా, నడుస్తున్న ఏ ప్రాసెస్ అయినా గ్లోబల్ నేమ్‌స్పేస్‌లను ఉపయోగిస్తుంది మరియు సిస్టమ్‌లోని చాలా ప్రాసెస్‌లు పేర్కొనకపోతే కూడా అలా చేస్తాయి.

నేమ్‌స్పేస్‌లతో పనిచేస్తోంది

మీరు ఫైల్ను ఉపయోగించవచ్చు lsns మీ సిస్టమ్ సక్రియంగా ఉన్న ప్రస్తుత నేమ్‌స్పేస్‌లను ప్రదర్శించడానికి కమాండ్ (ls-namespaces). ఈ ఆదేశం తప్పనిసరిగా రూట్‌గా అమలు చేయబడాలి, లేకపోతే జాబితా అసంపూర్ణంగా ఉండవచ్చు.

ప్రస్తుత నేమ్‌స్పేస్‌లను వీక్షించడానికి lsns (ls-namespaces) ఆదేశాన్ని ఉపయోగించండి

పైన ఉంది lsns తాజా ఉబుంటు సంస్థాపన నుండి అవుట్పుట్. ప్రతి నేమ్‌స్పేస్ ప్రాసెస్ ID, యూజర్ మరియు కమాండ్ పక్కన జాబితా చేయబడింది. ఏడు నేమ్‌స్పేస్‌లు దీని ద్వారా సృష్టించబడ్డాయి /sbin/init PID 1 తో ఏడు గ్లోబల్ నేమ్‌స్పేస్‌లు ఉన్నాయి. ఇతర నేమ్‌స్పేస్‌లు మాత్రమే mnt కానానికల్ యొక్క లైవ్‌ప్యాచ్ సేవతో పాటు సిస్టమ్ డెమోన్‌ల కోసం నేమ్‌స్పేస్‌లు.

మీరు కంటైనర్లతో పనిచేస్తే, ఈ జాబితా చాలా ఎక్కువ. పొడిగింపుతో మీరు ఈ జాబితాను JSON ఆకృతిలో సృష్టించవచ్చు -J ఫ్లాగ్, మీరు స్క్రిప్టింగ్ భాషతో మరింత సులభంగా ఉపయోగించవచ్చు.

మీరు మీ ప్రస్తుత నేమ్‌స్పేస్‌ను మార్చవచ్చు nsenter వినియోగ. సాధారణంగా డీబగ్గింగ్ ప్రయోజనాల కోసం, మరొక ప్రాసెస్ యొక్క నేమ్‌స్పేస్‌ను “ఎంటర్” చేయడానికి ఈ ఆదేశం మిమ్మల్ని అనుమతిస్తుంది. ఇది వాస్తవానికి ఆ నేమ్‌స్పేస్‌లో ఏదైనా ఆదేశాన్ని అమలు చేయగలదు, కానీ అప్రమేయంగా ఇది షెల్‌ను లోడ్ చేయడానికి ప్రయత్నిస్తుంది (/bin/bash సాధారణంగా).

మీరు ప్రాసెస్ ఐడిని పేర్కొనండి, ఆపై మీరు చొప్పించదలిచిన ప్రతి నేమ్‌స్పేస్:

sudo nsenter -t PID --mount --net --pid  //etc.

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

Kdevtmpfs కోసం మౌంట్ నేమ్‌స్పేస్‌లోకి ప్రవేశించే ప్రయత్నం మిమ్మల్ని ఆ నేమ్‌స్పేస్‌లోకి లోడ్ చేస్తుంది, కాని తరువాత అది విఫలమవుతుంది ఎందుకంటే అది / బిన్ / బాష్ కనుగొనబడలేదు

మీ బిడ్డ ఉంటే mnt నేమ్‌స్పేస్ చేర్చబడింది /bin/bash, మీరు దానిలోకి వెళ్లి షెల్ లోడ్ చేయవచ్చు. ఇది మానవీయంగా చేయవచ్చు కాని బైండ్ మౌంట్ ద్వారా చేయాలి, ఇది డైరెక్టరీ ట్రీని మార్చగలదు మరియు ఫైళ్ళను అంతటా బంధిస్తుంది mnt నేమ్‌స్పేస్‌లు. ఇది రెండు ప్రక్రియలు ఒకే ఫైల్ నుండి వేర్వేరు కంటెంట్‌ను చదివేలా చేయడం వంటి కొన్ని ఆసక్తికరమైన ఉపయోగ సందర్భాలకు దారితీస్తుంది.

క్రొత్త నేమ్‌స్పేస్‌లను సృష్టించడానికి, మీరు ఇప్పటికే ఉన్న (సాధారణంగా గ్లోబల్) నుండి ఫోర్క్ చేయాలి మరియు మీరు ఏ నేమ్‌స్పేస్‌లను మార్చాలనుకుంటున్నారో పేర్కొనండి. ఇది జరుగుతుంది unshare కమాండ్, ఇది మాస్టర్ నుండి కొత్త “షేర్ చేయని” నేమ్‌స్పేస్‌తో కమాండ్‌ను నడుపుతుంది.

హోస్ట్ నేమ్ నేమ్‌స్పేస్‌ను భాగస్వామ్యం చేయడానికి, ఉపయోగించండి:

sudo unshare -u command

ఆదేశం ఖాళీగా ఉంటే, unshare అప్రమేయంగా బాష్ నడుస్తుంది. ఇది క్రొత్త నేమ్‌స్పేస్‌ను సృష్టిస్తుంది lsnsదీని అవుట్పుట్:

ఆదేశం ఖాళీగా ఉంటే, షేర్ చేయవద్దు అప్రమేయంగా బాష్ నడుస్తుంది

టెర్మినల్ మల్టీప్లెక్సర్ screen నేపథ్యంలో బాష్ నడుస్తూ ఉండటానికి ఇది ఇక్కడ ఉపయోగించబడుతుంది, లేకపోతే ప్రక్రియ మూసివేయబడినప్పుడు నేమ్‌స్పేస్ కనిపించదు.

మీరు చాలా తక్కువ-స్థాయి ప్రోగ్రామింగ్ చేయకపోతే, మీరు నేమ్‌స్పేస్‌లను మీరే తాకనవసరం లేదు. డాకర్ వంటి కంటైనరైజేషన్ ప్రోగ్రామ్‌లు మీ కోసం వివరాలను నిర్వహిస్తాయి మరియు ప్రాసెస్ ఐసోలేషన్ అవసరమయ్యే చాలా సందర్భాలలో, మీరు ఇప్పటికే ఉన్న సాధనాన్ని ఉపయోగించాలి. అయినప్పటికీ, కంటైనరైజేషన్ సందర్భంలో నేమ్‌స్పేస్‌లు ఎలా పనిచేస్తాయో అర్థం చేసుకోవడం చాలా ముఖ్యం, ప్రత్యేకించి మీరు మీ డాకర్ కంటైనర్‌ల యొక్క తక్కువ-స్థాయి సెటప్ చేస్తుంటే లేదా మాన్యువల్ డీబగ్గింగ్ చేయాల్సిన అవసరం ఉంటే.

Source link