డాకర్ కంపోజ్ - మెమరీ పరిమితులు

Docker Compose Memory Limits



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

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







అన్ని సేవలు, వాటి నెట్‌వర్కింగ్ అవసరాలు, నిల్వ అవసరాలు మొదలైనవి డాకర్- compose.yml ఫైల్‌లో పేర్కొనవచ్చు. మేము ఇక్కడ మెమరీ వినియోగాన్ని పేర్కొనడంపై దృష్టి పెడతాము.



మీ ఆర్సెనల్‌లో అనుసరించడానికి మీకు ఈ క్రింది టూల్స్ అవసరం:



  1. డాకర్ యొక్క ప్రాథమిక అవగాహన
  2. విండోస్ లేదా మాక్ కోసం డాకర్ లేదా మీరు లైనక్స్ రన్ చేస్తుంటే, Linux కోసం DockCCE
  3. డాకర్ కంపోజ్ బినార్ y (Windows మరియు Mac యూజర్లు దీనిని ఇప్పటికే ఇన్‌స్టాల్ చేసారు)

మా డాకర్- compose.yml ఫైల్స్ కోసం వెర్షన్ 2.4 కి కట్టుబడి ఉంటాం, అది వెర్షన్ 17.12 మరియు డాకర్ ఇంజిన్ మరియు అంతకంటే ఎక్కువ వెర్షన్‌లకు మద్దతు ఇస్తుంది. మేము ఇటీవలి వెర్షన్ 3 తో ​​వెళ్ళవచ్చు కానీ ఇది పాత మెమరీ పరిమితి వాక్యనిర్మాణానికి మద్దతు ఇవ్వదు. మీరు కొత్త వాక్యనిర్మాణాన్ని ఉపయోగించడానికి ప్రయత్నిస్తే, అది బదులుగా స్వార్మ్ మోడ్‌లో డాకర్‌ను ఉపయోగించాలని నొక్కి చెబుతుంది. కాబట్టి సాధారణ డాకర్ వినియోగదారుల కోసం విషయాన్ని సరళంగా ఉంచడానికి నేను వెర్షన్ 2.4 కి కట్టుబడి ఉంటాను





వెర్షన్ 3 కోసం చాలా కోడ్ ఒకే విధంగా పనిచేస్తుంది మరియు ఎక్కడ తేడా ఉంటుందో, నేను డాకర్ స్వార్మ్ వినియోగదారుల కోసం కొత్త సింటాక్స్ గురించి ప్రస్తావిస్తాను.

నమూనా అప్లికేషన్

మొదట CLI మరియు తరువాత ఒక సాధారణ డాకర్- compose.yml ఉపయోగించి పోర్ట్ 80 లో ఒక సాధారణ Nginx సేవను ప్రయత్నించి అమలు చేద్దాం. తదుపరి విభాగంలో, మేము దాని మెమరీ పరిమితులు మరియు వినియోగాన్ని అన్వేషించి, కస్టమ్ పరిమితులు ఎలా విధించబడ్డాయో చూడటానికి మా డాకర్- compose.yml ని సవరించాలి.



డాకర్- CLI ని ఉపయోగించి ఒక సాధారణ nginx సర్వర్‌ని ప్రారంభిద్దాం:

$ docker run -d -name my -nginx -p80:80nginx: తాజాది

సందర్శించడం ద్వారా మీరు nginx సర్వర్ పని చేయడాన్ని చూడవచ్చు http: // లోకల్ హోస్ట్ లేదా lcoalhost స్థానంలో

మీ డాకర్ హోస్ట్ యొక్క IP చిరునామాతో. ఈ కంటైనర్ మీ డాకర్ హోస్ట్‌లో అందుబాటులో ఉన్న మొత్తం మెమరీని సమర్థవంతంగా ఉపయోగించుకోగలదు (మా విషయంలో ఇది దాదాపు 2GB ఉంటుంది). మెమరీ వినియోగాన్ని తనిఖీ చేయడానికి, ఇతర విషయాలతోపాటు, మేము ఆదేశాన్ని ఉపయోగించవచ్చు:

$-డాకర్ గణాంకాలు my-nginx

కంటైనర్ ID పేరు CPU % MEM ఉపయోగం/పరిమితి MEM % NET I/O బ్లాక్ I/O పిడ్స్
6eb0091c0cf2 my-nginx0.00% 2.133MiB / 1.934GiB0.11% 3.14kB / 2.13kB 0B / 0B2

మొత్తం 1.934GiB లో MEM వినియోగం/LIMIT 2.133MiB వద్ద ఉంది. ఈ కంటైనర్‌ను తీసివేసి, డాకర్-కంపోజ్ స్క్రిప్ట్‌లను రాయడం ప్రారంభిద్దాం.

$ docker my-nginx ని ఆపండి
$ docker rm my-nginx

సమానమైన ym ఫైల్

మేము ఈ దశలను అనుసరిస్తే పైన పేర్కొన్న ఖచ్చితమైన కంటైనర్ సృష్టించబడుతుంది:

$ mkdir నా కంపోజ్
$ cd నా కంపోజ్
$ vim డాకర్- compose.yml

మేము కొత్త ఖాళీ డైరెక్టరీని సృష్టిస్తాము మరియు దానిలో డాకర్- compose.yml అనే ఫైల్‌ను సృష్టిస్తాము. మేము ఈ డైరెక్టరీ నుండి డాకర్-కంపోజ్‌ను అమలు చేసినప్పుడు, అది ఈ నిర్దిష్ట ఫైల్ కోసం చూస్తుంది (మిగతావన్నీ విస్మరించి) మరియు తదనుగుణంగా మా విస్తరణను సృష్టిస్తుంది. ఈ .yml ఫైల్ లోపల కింది విషయాలను జోడించండి.

సంస్కరణ: Telugu:'3'
సేవలు:
my-nginx:
చిత్రం: nginx: తాజాది
పోర్టులు:
-'80: 80 '

$ డాకర్ -కంపోజ్ అప్ -డి

-D ఫ్లాగ్ జోడించబడింది, తద్వారా కొత్తగా సృష్టించిన కంటైనర్లు నేపథ్యంలో నడుస్తాయి. లేకపోతే, టెర్మినల్ కంటైనర్‌లకు జతచేయబడుతుంది మరియు దాని నుండి నివేదికలను ముద్రించడం ప్రారంభిస్తుంది. ఇప్పుడు మనం కొత్తగా సృష్టించిన కంటైనర్ (ల) గణాంకాలను చూడవచ్చు:

$ డాకర్ గణాంకాలు -అన్ని

కంటైనర్ ID పేరు CPU% MEM ఉపయోగం/పరిమితి MEM% NET I/O బ్లాక్ I/O పిడ్స్
5f8a1e2c08ac my-compose_my-nginx_10.00% 2.25MiB/1.934GiB0.11% 1.65kB/0B 7.35MB/0B2

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

$డాకర్-కంపోజ్ డౌన్

ఇది సృష్టించబడిన ఏవైనా వాల్యూమ్‌లను మినహాయించి డాకర్‌ను శుభ్రమైన స్థితికి తీసుకువస్తుంది (మేము ఏదీ సృష్టించలేదు కాబట్టి అది ఆందోళన కలిగించదు.)

మెమరీ పరిమితులు మరియు మెమరీ రిజర్వేషన్లు

మెమరీ పరిమితులు మరియు మెమరీ రిజర్వేషన్‌లు మీ అప్లికేషన్‌లు మరియు మీరు పైన నడుస్తున్న డాకర్ హోస్ట్ యొక్క సజావుగా పనిచేయడానికి రెండు విభిన్న అంశాలు.

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

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

సంగ్రహించేందుకు:

  1. మెమరీ పరిమితి: ఒక కంటైనర్‌కు అందుబాటులో ఉండే మెమరీ మొత్తానికి కఠినమైన ఎగువ పరిమితి.
  2. మెమరీ రిజర్వేషన్: ఇది ఒక అప్లికేషన్ సరిగ్గా అమలు చేయడానికి అవసరమైన కనీస మెమరీగా సెట్ చేయాలి. కాబట్టి సిస్టమ్ కొంత మెమరీని తిరిగి పొందడానికి ప్రయత్నిస్తున్నప్పుడు అది క్రాష్ అవ్వదు లేదా తప్పుగా ప్రవర్తించదు.

మెమరీ రిజర్వేషన్ మెమరీ పరిమితి కంటే ఎక్కువగా ఉంటే, మెమరీ పరిమితి ప్రాధాన్యతనిస్తుంది.

మెమరీ పరిమితులు మరియు రిజర్వేషన్ పేర్కొనడం

వెర్షన్ 2

మనం ఇంతకు ముందు రాసిన డాకర్- compose.yml కి తిరిగి వెళ్లి దానికి మెమరీ పరిమితిని జోడిద్దాం. ముందస్తు అవసరాల విభాగంలో చర్చించిన కారణాల వల్ల వెర్షన్‌ని 2.4 కి మార్చండి.

సంస్కరణ: Telugu:'2.4'
సేవలు:
my-nginx:
చిత్రం: nginx: తాజాది
పోర్టులు:
-'80: 80 '
మెమ్_లిమిట్: 300 మీ

చివరి పంక్తి my-nginx సేవ కోసం పరిమితిని 300MiB కి సెట్ చేస్తుంది. మీరు KiB కోసం k ని ఉపయోగించవచ్చు, మరియు GiB కోసం g ని మరియు b ని కేవలం btes కోసం b ని ఉపయోగించవచ్చు. అయితే, దానికి ముందు ఉన్న సంఖ్య తప్పనిసరిగా పూర్ణాంకం అయి ఉండాలి. మీరు 2.4 మీ వంటి విలువలను ఉపయోగించలేరు, బదులుగా మీరు 2400 కే ఉపయోగించాలి. ఇప్పుడు మీరు పరిగెత్తితే:

$ డాకర్ స్టాట్ -అన్నీ

కంటైనర్ ID పేరు CPU % MEM ఉపయోగం/పరిమితి MEM % NET I/O బ్లాక్ I/O పిడ్స్
44114d785d0a నా- compose_my-nginx_10.00% 2.141MiB/300MiB0.71% 1.16kB/0B 0B/0B2

మెమరీ పరిమితి 300 MiB కి సెట్ చేయబడిందని మీరు గమనించవచ్చు. మెమరీ రిజర్వేషన్‌ని సెట్ చేయడం సమానంగా సులభం, కేవలం ఒక మెమ్_రెజర్వేషన్‌ని జోడించండి: చివర xxx.

సంస్కరణ: Telugu:'2.4'
సేవలు:
my-nginx:
చిత్రం: nginx: తాజాది
పోర్టులు:
-'80: 80 '
మెమ్_లిమిట్: 300 మీ
మెమ్_ రిజర్వేషన్: 100 మీ

వెర్షన్ 3 (ఐచ్ఛికం)

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

సంస్కరణ: Telugu:'3'
సేవలు:
my-nginx:
చిత్రం: nginx: తాజాది
పోర్టులు:
-'80: 80 '
మోహరించేందుకు:
వనరులు:
పరిమితులు:
మెమరీ: 300 మీ
రిజర్వేషన్లు:
మెమరీ: 100 మీ

మేము వనరుల ఎంపిక కింద ఇవన్నీ నిర్వచించాము. పరిమితులు మరియు రిజర్వేషన్ వారి స్వంత ప్రాథమిక కీలు మరియు మెమరీ ఇక్కడ నిర్వహించబడుతున్న అనేక వనరులలో ఒకటి. CPU అనేది మరొక ముఖ్యమైన పరామితి.

మరిన్ని వివరాలకు

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

మీరు ప్రతిదీ తెలుసుకోవలసిన అవసరం లేదు, మీ అప్లికేషన్‌కు ఏమి అవసరమో వెతకండి మరియు దానిని అమలు చేయడంలో సూచన మీకు మార్గనిర్దేశం చేస్తుంది.