ډاکر څه شی دی: تاریخ او بنسټیز خلاصون ته یو لنډ سفر

په سلوم کې د اګست په 10 مه پیل شو د ډاکر ویډیو کورس، په کوم کې چې موږ دا په بشپړ ډول تحلیل کوو - له لومړني خلاصون څخه د شبکې پیرامیټونو پورې.

پدې مقاله کې به موږ د ډاکر تاریخ او د هغې اصلي خلاصون په اړه وغږیږو: عکس ، کلیک ، ډاکر فایل. لیکچر د پیل کونکو لپاره دی ، نو دا امکان نلري چې تجربه لرونکي کاروونکو ته علاقه ولري. هیڅ وینه، اپنډکس یا ژور ډوب نه وي. ډیر اساسات.

ډاکر څه شی دی: تاریخ او بنسټیز خلاصون ته یو لنډ سفر

Docker څه شی دی

راځئ چې د ویکیپیډیا څخه د ډاکر تعریف وګورو.

ډاکر په کانټینر شوي چاپیریال کې د غوښتنلیکونو پلي کولو او مدیریت اتومات کولو لپاره سافټویر دی.

د دې تعریف څخه هیڅ شی روښانه نه دی. دا په ځانګړي ډول روښانه نده چې "په چاپیریال کې چې د کانټینر کولو ملاتړ کوي" معنی څه ده. د موندلو لپاره، راځئ چې په وخت کې بیرته لاړ شو. راځئ چې د هغه دور سره پیل وکړو چې زه په دودیز ډول "مونولیتیک دور" بولم.

Monolithic دوره

monolithic دوره د 2000s په لومړیو کې ده، کله چې ټول غوښتنلیکونه واحدونه وو، د یو شمیر انحصارونو سره. پرمختګ ډیر وخت واخیست. په ورته وخت کې، ډیری سرورونه نه وو؛ موږ ټول دوی په نوم پیژنو او څارنه یې کوله. داسې یو مسخره پرتله شتون لري:

څاروي کورني څاروي دي. په monolithic دوره کې، موږ خپل سرورونه د څارویو په څیر چلند کاوه، پالل شوي او پالل شوي، د دوړو ټوټو له مینځه وړل. او د سرچینو غوره مدیریت لپاره، موږ مجازی کول کارول: موږ یو سرور واخیست او په څو مجازی ماشینونو کې یې پرې کړو، په دې توګه د چاپیریال جلا کول ډاډمن کول.

د Hypervisor پر بنسټ د مجازی کولو سیسټمونه

هرڅوک شاید د مجازی کولو سیسټمونو په اړه اوریدلي وي: VMware، VirtualBox، Hyper-V، Qemu KVM، او داسې نور. دوی د غوښتنلیک جلا کول او د سرچینو مدیریت چمتو کوي، مګر دوی زیانونه هم لري. د مجازی کولو لپاره، تاسو یو هایپروایزر ته اړتیا لرئ. او هایپروایسر یوه سرچینه ده. او مجازی ماشین پخپله معمولا یو بشپړ کولسوس دی - یو دروند عکس چې یو عملیاتي سیسټم لري، نګینکس، اپاچي، او ممکن MySQL. انځور لوی دی او مجازی ماشین د کار کولو لپاره ناامنه دی. د پایلې په توګه، د مجازی ماشینونو سره کار کول سست کیدی شي. د دې ستونزې د حل لپاره، د کرنل په کچه د مجازی کولو سیسټمونه جوړ شوي.

د کرنل کچې مجازی کولو سیسټمونه

د کرنل په کچه مجازی کول د OpenVZ، Systemd-nspawn، LXC سیسټمونو لخوا ملاتړ کیږي. د دې ډول مجازی کولو یوه غوره بیلګه LXC (لینکس کانټینرونه) دي.

LXC په یو واحد نوډ کې د لینکس عملیاتي سیسټم ډیری جلا جلا مثالونو چلولو لپاره د عملیاتي سیسټم په کچه مجازی سیسټم دی. LXC مجازی ماشینونه نه کاروي، مګر د خپل پروسې ځای او د شبکې سټیک سره یو مجازی چاپیریال رامینځته کوي.

په لازمي ډول LXC کانټینرونه رامینځته کوي. د مجازی ماشینونو او کانتینرونو ترمنځ توپیر څه دی؟

ډاکر څه شی دی: تاریخ او بنسټیز خلاصون ته یو لنډ سفر

کانټینر د جلا کولو پروسو لپاره مناسب ندي: زیانمنتیاوې د کرنل په کچه د مجازی سیسټمونو کې موندل کیږي چې دوی ته اجازه ورکوي چې له کانټینر څخه کوربه ته وتښتي. له همدې امله ، که تاسو اړتیا لرئ یو څه جلا کړئ ، نو دا به غوره وي چې د مجازی ماشین وکاروئ.

د مجازی کولو او کانټینر کولو ترمینځ توپیرونه په ډیاګرام کې لیدل کیدی شي.
د هارډویر هایپروایزرونه، د OS په سر کې هایپروایسرونه، او کانټینرونه شتون لري.

ډاکر څه شی دی: تاریخ او بنسټیز خلاصون ته یو لنډ سفر

د هارډویر هایپروایسر ښه دي که تاسو واقعیا غواړئ یو څه جلا کړئ. ځکه چې دا ممکنه ده چې د حافظې پاڼې او پروسیسر په کچه جلا کړئ.

دلته د برنامه په توګه هایپروایزر شتون لري ، او کانټینرونه شتون لري ، او موږ به د دوی په اړه نور خبرې وکړو. د کانټینر کولو سیسټمونه هایپروایسر نلري، مګر د کانټینر انجن شتون لري چې کانټینرونه جوړوي او اداره کوي. دا شی ډیر لږ وزن لري، نو د کور سره د کار کولو له امله لږ سر یا هیڅ شی شتون نلري.

هغه څه چې د کرنل په کچه د کانټینر کولو لپاره کارول کیږي

اصلي ټیکنالوژي چې تاسو ته اجازه درکوي د نورو پروسو څخه جلا کانټینر رامینځته کړئ نوم ځایونه او کنټرول ګروپونه دي.

نوم ځایونه: PID، شبکه کول، ماونټ او کارن. نور ډیر څه شتون لري، مګر د پوهیدو اسانتیا لپاره موږ به پدې تمرکز وکړو.

د PID نوم ځای پروسې محدودوي. کله چې، د مثال په توګه، موږ د PID نوم ځای جوړوو او هلته یوه پروسه ځای په ځای کوو، دا د PID 1 سره بدلیږي. معمولا په سیسټمونو کې PID 1 سیسټم یا init وي. په دې اساس، کله چې موږ یو بهیر په نوي نوم ځای کې ځای پر ځای کړو، دا هم PID 1 ترلاسه کوي.

د شبکې نوم ځای تاسو ته اجازه درکوي چې شبکه محدود / جلا کړئ او خپل انٹرفیس دننه ځای په ځای کړئ. Mount د فایل سیسټم محدودیت دی. د کارونکي - د کاروونکو محدودیت.

د کنټرول ګروپونه: حافظه، CPU، IOPS، شبکه - په مجموع کې شاوخوا 12 ترتیبات. که نه نو دوی ته Cgroups ("C-groups") هم ویل کیږي.

د کنټرول ګروپونه د کانټینر لپاره سرچینې اداره کوي. د کنټرول ګروپونو له لارې موږ کولی شو ووایو چې کانټینر باید د یوې ټاکلې اندازې څخه ډیر سرچینې مصرف نکړي.

د کانټینر کولو لپاره په بشپړ ډول کار کولو لپاره، اضافي ټیکنالوژي کارول کیږي: وړتیاوې، د کاپي لیکل او نور.

وړتیاوې هغه وخت دي چې موږ یوې پروسې ته ووایو چې دا څه کولی شي او څه نشي کولی. د کرنل په کچه، دا په ساده ډول د ډیری پیرامیټونو سره بټ میپونه دي. د مثال په توګه، د روټ کاروونکي بشپړ امتیازات لري او هرڅه کولی شي. د وخت سرور کولی شي د سیسټم وخت بدل کړي: دا د وخت کیپسول کې وړتیاوې لري، او دا دی. د امتیازاتو په کارولو سره، تاسو کولی شئ په نرمۍ سره د پروسو لپاره محدودیتونه تنظیم کړئ، او پدې توګه خپل ځان خوندي کړئ.

د کاپي پر لیکلو سیسټم موږ ته اجازه راکوي چې د ډاکر عکسونو سره کار وکړو او په ډیر اغیزمن ډول یې وکاروو.

ډاکر اوس مهال د Cgroups v2 سره د مطابقت مسلې لري، نو دا مقاله په ځانګړې توګه په Cgroups v1 تمرکز کوي.

خو راځئ چې تاریخ ته ورشو.

کله چې د مجازی کولو سیسټمونه د کرنل په کچه ښکاره شول، دوی په فعاله توګه کارول پیل کړل. په هایپروایسر کې سر ورک شو، مګر ځینې ستونزې پاتې دي:

  • لوی انځورونه: دوی یو عملیاتي سیسټم، کتابتونونه، د مختلف سافټویر یوه ډله په ورته OpenVZ کې اچوي، او په پای کې انځور لاهم خورا لوی وي؛
  • د بسته بندۍ او تحویل لپاره نورمال معیار شتون نلري ، نو د انحصار ستونزه پاتې ده. داسې شرایط شتون لري کله چې د کوډ دوه ټوټې ورته کتابتون کاروي ، مګر د مختلف نسخو سره. ښايي د دوی تر منځ شخړه وي.

د دې ټولو ستونزو د حل لپاره، راتلونکی دور راغلی دی.

د کانټینر دوره

کله چې د کانټینرونو دور راغی، د دوی سره د کار کولو فلسفه بدله شوه:

  • یو پروسس - یو کانټینر.
  • موږ ټول هغه انحصارونه وړاندې کوو چې پروسه ورته اړتیا لري کانټینر ته. دا اړتیا لري چې په مایکرو سرویسونو کې مونولیتونه پرې کړي.
  • هرڅومره چې عکس کوچنی وي ، ښه - لږ احتمالي زیانونه شتون لري ، دا ګړندي راپورته کیږي ، او داسې نور.
  • مثالونه لنډمهاله کیږي.

په یاد ولرئ چې ما د څارویو او څارویو په اړه څه وویل؟ پخوا، مثالونه د کورني څارویو په څیر وو، مګر اوس د غواګانو په څیر شوي دي. پخوا، یو مونولیت شتون درلود - یو غوښتنلیک. اوس دا 100 مایکرو خدمتونه، 100 کانټینرونه دي. ځینې ​​کانټینرونه ممکن 2-3 نقلونه ولري. دا زموږ لپاره لږ مهم کیږي چې هر کانټینر کنټرول کړو. هغه څه چې زموږ لپاره خورا مهم دي پخپله د خدماتو شتون دی: د کانټینرونو دا سیټ څه کوي. دا د څارنې طریقې بدلوي.

په 2014-2015 کې، ډاکر وده وکړه - هغه ټیکنالوژي چې موږ به یې اوس په اړه خبرې وکړو.

ډاکر فلسفه او معیاري غوښتنلیک بسته بندي بدله کړه. د ډاکر په کارولو سره ، موږ کولی شو یو غوښتنلیک بسته کړو ، ذخیره کولو ته یې واستوو ، له هغه ځایه یې ډاونلوډ کړو ، او ځای په ځای یې کړو.

موږ هرڅه چې موږ ورته اړتیا لرو د ډاکر کانټینر کې واچوو ، نو د انحصار ستونزه حل شوې. ډاکر د تولید وړتیا تضمینوي. زه فکر کوم چې ډیری خلک د غیر تولیدي وړتیا سره مخ شوي: هرڅه ستاسو لپاره کار کوي، تاسو یې تولید ته هڅوئ، او هلته دا کار ودروي. د ډاکر سره دا ستونزه له منځه ځي. که ستاسو د ډاکر کانټینر پیل شي او هغه څه وکړي چې ورته اړتیا لري ، نو د لوړې کچې احتمال سره به دا په تولید کې پیل شي او هلته به ورته وکړي.

د سر په اړه انحراف

تل د سر په اړه شخړې شتون لري. ځینې ​​​​خلک پدې باور دي چې ډاکر اضافي بار نه اخلي ، ځکه چې دا د لینکس کرنل او د کانټینر کولو لپاره اړین ټولې پروسې کاروي. لکه، "که تاسو ووایاست چې ډاکر سر دی، نو د لینکس کرنل سر دی."

له بلې خوا، که تاسو ژور ته لاړ شئ، په ډاکر کې په حقیقت کې ډیری شیان شتون لري چې د اوږدې مودې سره، سر ته ویل کیدی شي.

لومړی د PID نوم ځای دی. کله چې موږ یوه پروسه په نوم ځای کې ځای په ځای کوو، دا د PID 1 ټاکل کیږي. په ورته وخت کې، دا پروسه یو بل PID لري، چې د کوربه نوم ځای کې موقعیت لري، د کانټینر څخه بهر. د مثال په توګه، موږ نګینکس په کانټینر کې پیل کړ، دا د PID 1 (ماسټر پروسې) شو. او په کوربه کې دا PID 12623 لري. او دا ستونزمنه ده چې ووایو چې دا څومره سر دی.

دوهم شی Cgroups دی. راځئ چې د حافظې له مخې Cgroups واخلو، دا د کانټینر د حافظې محدودولو وړتیا ده. کله چې دا فعال شي، کاونټرونه او د حافظې محاسبه فعاله کیږي: کرنل باید پوه شي چې څومره پاڼې تخصیص شوي او څومره د دې کانټینر لپاره لاهم وړیا دي. دا ممکن یو سر سر وي، مګر ما هیڅ دقیقه مطالعه نه ده لیدلې چې دا څنګه په فعالیت اغیزه کوي. او ما پخپله ونه لید چې په ډاکر کې روان غوښتنلیک ناڅاپه په فعالیت کې د پام وړ زیان تجربه کړ.

او د فعالیت په اړه یو بل یادونه. د کرنل ځینې پیرامیټونه له کوربه څخه کانټینر ته لیږدول کیږي. په ځانګړې توګه، د شبکې ځینې پیرامیټونه. له همدې امله ، که تاسو غواړئ په ډاکر کې یو څه لوړ فعالیت پرمخ وړئ ، د مثال په توګه ، یو څه چې به په فعاله توګه شبکه وکاروي ، نو تاسو لږترلږه اړتیا لرئ دا پیرامیټونه تنظیم کړئ. ځینې ​​​​nf_conntrack، د بیلګې په توګه.

د ډاکر مفهوم په اړه

ډاکر له څو برخو څخه جوړ دی:

  1. ډاکر ډیمون ورته کانټینر انجن دی؛ کانټینرونه پیلوي.
  2. ډاکر CII د ډاکر مدیریت یوټیلیټ دی.
  3. ډاکر فایل - د عکس جوړولو څرنګوالي په اړه لارښوونې.
  4. انځور - هغه انځور چې له هغې څخه کانټینر راوباسي.
  5. لوښی
  6. د ډاکر راجسټری د عکس ذخیره ده.

په سکیمیک ډول دا یو څه داسې ښکاري:

ډاکر څه شی دی: تاریخ او بنسټیز خلاصون ته یو لنډ سفر

د ډاکر ډیمون په Docker_host کې چلیږي او کانټینرونه لانچوي. یو پیرودونکی شتون لري چې امرونه لیږي: عکس جوړ کړئ ، عکس ډاونلوډ کړئ ، کانټینر لانچ کړئ. ډاکر ډیمون راجسټری ته ځي او دوی یې اجرا کوي. د ډاکر پیرودونکی کولی شي دواړه په محلي ډول (یونیکس ساکټ ته) او د TCP له لارې د لیرې کوربه څخه لاسرسی ومومي.

راځئ چې د هرې برخې له لارې لاړ شو.

ډاکر ډیمون - دا د سرور برخه ده، دا په کوربه ماشین کې کار کوي: عکسونه ډاونلوډ کوي او له دوی څخه کانټینرونه لانچوي، د کانټینرونو ترمنځ شبکه جوړوي، لاګونه راټولوي. کله چې موږ وایو "یو انځور جوړ کړئ،" شیطان هم دا کار کوي.

ډاکر CLI - د ډاکر پیرودونکي برخه، د ډیمون سره کار کولو لپاره د کنسول افادیت. زه تکراروم، دا نه یوازې په محلي توګه، بلکې په شبکه کې هم کار کولی شي.

اساسي حکمونه:

docker ps - کانټینرونه وښایاست چې دا مهال د ډاکر کوربه کې روان دي.
د ډاکر عکسونه - په ځایی ډول ډاونلوډ شوي عکسونه ښیې.
د ډاکر لټون <> - په راجسټری کې د عکس لټون.
د ډاکر پل <> - د راجسټری څخه ماشین ته عکس ډاونلوډ کړئ.
ډاکر جوړ < > - انځور راټول کړئ.
docker run <> - کانټینر پیل کړئ.
docker rm <> - کانټینر لرې کړئ.
docker logs <> - د کانټینر لوګو
docker start/stop/restart <> - د کانټینر سره کار کول

که تاسو دا کمانډونه ماسټر کړئ او د دوی په کارولو باوري یاست ، خپل ځان د کارونکي په کچه په ډاکر کې 70٪ ماهر وګڼئ.

ډکولر - د انځور جوړولو لپاره لارښوونې. نږدې هر لارښوونې قوماندې یو نوی پرت دی. راځئ چې یو مثال وګورو.

ډاکر څه شی دی: تاریخ او بنسټیز خلاصون ته یو لنډ سفر

دا هغه څه دي چې ډاکر فایل ورته ښکاري: په ښي خوا کې حکمونه، په ښي خوا کې دلیلونه. هر کمانډ چې دلته دی (او عموما په ډاکر فایل کې لیکل شوی) په عکس کې نوی پرت رامینځته کوي.

حتی ښي خوا ته په کتلو سره، تاسو کولی شئ په سمه توګه پوه شئ چې څه پیښیږي. موږ وایو: "زموږ لپاره فولډر جوړ کړئ" - دا یو پرت دی. "د فولډر کار کول" بل پرت دی، او داسې نور. پرت کیک ژوند اسانه کوي. که زه بل ډاکر فایل رامینځته کړم او په وروستي کرښه کې یو څه بدل کړم - زه د "python" "main.py" پرته بل څه پرمخ وړم ، یا له بل فایل څخه انحصارونه نصب کړم - نو پخوانۍ پرتونه به د کیچ په توګه بیا وکارول شي.

د انځور - دا د کانټینر بسته بندي ده؛ کانټینرونه د عکس څخه پیل شوي. که موږ ډاکر ته د کڅوړې مدیر له نظره وګورو (لکه څنګه چې موږ د deb یا rpm کڅوړو سره کار کوو) ، نو بیا عکس په اصل کې د rpm کڅوړه ده. د یوم انسټال له لارې موږ کولی شو اپلیکیشن نصب کړو، حذف یې کړو، په ذخیره کې یې ومومئ، او ډاونلوډ یې کړو. دا دلته د ورته په اړه دی: کانټینرونه د عکس څخه پیل شوي ، دوی د ډاکر راجسټری کې زیرمه شوي (یوم ته ورته ، په ذخیره کې) ، او هر عکس د SHA-256 هش ، نوم او ټاګ لري.

انځور د Dockerfile لارښوونو سره سم جوړ شوی. د Dockerfile څخه هره لارښوونه یو نوی پرت رامینځته کوي. پرتونه بیا کارول کیدی شي.

د ډاکر راجستر د ډاکر عکس ذخیره ده. د OS په څیر، Docker د عامه معیاري راجستر لري - dockerhub. مګر تاسو کولی شئ خپل ذخیره جوړه کړئ ، خپل د ډاکر راجسټری.

لوښی - هغه څه چې له عکس څخه پیل شوي. موږ د Dockerfile لارښوونو سره سم یو انځور جوړ کړ، بیا موږ له دې عکس څخه پیل کوو. دا کانټینر د نورو کانټینرونو څخه جلا دی او باید د غوښتنلیک د فعالیت لپاره اړین هرڅه ولري. په دې حالت کې، یو کانټینر - یو بهیر. دا پیښیږي چې تاسو باید دوه پروسې ترسره کړئ ، مګر دا یو څه د ډاکر ایډیالوژۍ سره مخالف دی.

د "یو کانټینر، یو پروسې" اړتیا د PID نوم ځای پورې اړه لري. کله چې د PID 1 سره پروسه په نوم ځای کې پیل شي ، که چیرې دا ناڅاپه مړ شي ، نو ټول کانټینر هم مړ کیږي. که چیرې دوه پروسې شتون ولري: یو ژوندی دی او بل مړ دی، نو کانټینر به لاهم ژوند ته دوام ورکړي. مګر دا د غوره تمریناتو پوښتنه ده، موږ به په نورو موادو کې د دوی په اړه خبرې وکړو.

د کورس د ځانګړتیاوو او بشپړ پروګرام په تفصیل سره مطالعه کولو لپاره، مهرباني وکړئ لینک تعقیب کړئ: "د ډاکر ویډیو کورس".

لیکوال: مارسیل ابرایف، د کبرنیټ تصدیق شوی مدیر، په ساوت برج کې انجنیر تمرین کوي، سپیکر او د سلرم کورسونو پراختیا کونکی.

سرچینه: www.habr.com

Add a comment