ایا ډاکر یو لوبو دی که نه؟ یا دا لاهم ریښتیا ده؟

سلام هر!

زه واقعیا غواړم مستقیم موضوع ته راشم ، مګر دا به ډیر سم وي چې زما د کیسې په اړه لږ څه ووایم:

د ننوتلو

زه یو پروګرامر یم چې په سرور کې د فرنټ اینډ واحد پاڼې غوښتنلیکونو، سکالا/جاوا او نوډجونو په جوړولو کې تجربه لرم.

د اوږدې مودې لپاره (یقینا یو دوه یا درې کاله) ، زه په دې نظر وم چې ډاکر د جنت څخه مینه ده او په عموم کې خورا ښه وسیله او په بشپړ ډول هر پراختیا کونکی باید د دې کارولو وړ وي. او له دې څخه دا تعقیب کیږي چې هر پراختیا کونکی باید په خپل محلي ماشین کې ډاکر نصب کړي. زما د نظر په اړه څه، د خالي ځایونو له لارې وګورئ چې په ورته hh کې پوسټ شوي. په هره ثانیه کې د ډاکر ذکر شامل دی، او که تاسو یې لرئ، دا به ستاسو سیالي ګټه وي 😉

زما په لاره کې ، ما ډیری خلکو سره ولیدل ، د ډاکر او د دې ایکوسیستم په اړه د دوی مختلف چلند سره. ځینو وویل چې دا یو مناسب شی دی چې د کراس پلیټ فارم فعالیت تضمینوي. دویم په دې نه پوهیده چې ولې باید په کانتینرونو کې وګرځي او څه ګټه به ترې ترلاسه کړي، دریم یې هیڅ پروا نه درلوده او نه یې ځوراوه (هغوی یوازې کوډ لیکلی و او کور ته لاړل - زه د دوی په واسطه حسد کوم. لاره :)

د کارونې لاملونه

ولې ما ډاکر کارولی؟ شاید د لاندې دلیلونو لپاره:

  • د ډیټابیس لانچ، 99٪ غوښتنلیکونه دوی کاروي
  • د فرنټ اینډ توزیع لپاره نګینکس پیل کول او بیکینډ ته پراکسي کول
  • تاسو کولی شئ غوښتنلیک په ډاکر عکس کې بسته کړئ ، پدې توګه زما غوښتنلیک به کار وکړي چیرې چې ډاکر شتون ولري ، د توزیع ستونزه سمدلاسه حل کیږي
  • د بکس څخه بهر د خدماتو کشف، تاسو کولی شئ مایکرو خدمتونه رامینځته کړئ، هر کانټینر (د ګډ شبکې سره وصل) کولی شي په اسانۍ سره د عرف له لارې بل ته ورسیږي، خورا اسانه
  • دا په زړه پورې ده چې یو کانټینر جوړ کړئ او په هغې کې "لوبې" وکړئ.

هغه څه چې زه تل د ډاکر په اړه نه خوښوم:

  • زما د غوښتنلیک د کار کولو لپاره ، زه پخپله سرور کې ډاکر ته اړتیا لرم. زه ولې دې ته اړتیا لرم که زما غوښتنلیکونه په jre یا nodejs پرمخ ځي او د دوی لپاره چاپیریال لا دمخه په سرور کې وي؟
  • که زه غواړم زما (شخصي) ځایی جوړ شوی عکس په ریموټ سرور کې پرمخ وړم ، نو زه خپل د ډاکر ذخیره ته اړتیا لرم ، زه د کار کولو لپاره راجسټری ته اړتیا لرم او زه هم د https تنظیم کولو ته اړتیا لرم ، ځکه چې ډاکر کلی یوازې په https باندې کار کوي. اوه لعنت ... دلته اختیارونه شتون لري، البته، د انځور ځایی ځای له لارې خوندي کول docker save او یوازې د scp له لارې عکس واستوئ ... مګر دا د بدن ډیر حرکتونه دي. او سربیره پردې ، دا د "کرچ" حل په څیر ښکاري تر هغه چې ستاسو خپل ذخیره څرګند نشي
  • docker-compose. دا یوازې د کانتینرونو چلولو ته اړتیا لري. بس نور څه نه. هغه نور څه نشي کولی. Docker-compose د خپلو فایلونو ډیری نسخې لري، خپل ترکیب. مهمه نده چې دا څومره اعالمیه وي، زه نه غواړم د دوی اسناد ولولم. زه به بل چیرې ورته اړتیا نلرم.
  • کله چې په ټیم کې کار کوي، ډیری خلک د ډاکر فایل په خورا کره توګه لیکي، نه پوهیږي چې دا څنګه زیرمه شوي، هر څه چې دوی ورته اړتیا لري اضافه کړي او عکس ته اړتیا نلري، د انځورونو څخه په میراث کې چې په Dockerhub یا شخصي ذخیره کې ندي، یو څه جوړ کړئ. docker-compose د ډیټابیسونو سره فایلونه او هیڅ شی دوام نلري. په ورته وخت کې ، پراختیا کونکي په ویاړ سره اعلان کوي ​​​​چې ډاکر ښه دی ، هرڅه د دوی لپاره په محلي ډول کار کوي ، او HR په مهم ډول په خالي ځای کې لیکي: "موږ ډاکر کاروو او داسې نوماند ته اړتیا لرو چې ورته کاري تجربه ولري."
  • زه په دوامداره توګه په ډاکر کې د هرڅه پورته کولو په اړه د فکرونو لخوا ځړول کیږم: postgresql، kafka، redis. دا د افسوس خبره ده چې هرڅه په کانټینرونو کې کار نه کوي ، نه هرڅه تنظیم کول او چلول اسانه دي. دا د دریمې ډلې پراختیا کونکو لخوا ملاتړ کیږي ، نه پخپله د پلورونکو لخوا. او په لاره کې، پوښتنه سمدلاسه راپورته کیږي: پلورونکي په ډاکر کې د خپلو محصولاتو ساتلو په اړه اندیښنه نلري ، ولې دا دی ، شاید دوی یو څه پوهیږي؟
  • پوښتنه تل د کانټینر ډیټا د دوام په اړه راپورته کیږي. او بیا تاسو فکر کوئ ، ایا زه یوازې د کوربه ډایرکټر نصب کړم یا د ډاکر حجم رامینځته کړم یا د ډیټا کانټینر جوړ کړم کوم چې اوس دی deprecated؟ که زه ډایرکټر نصب کړم ، نو زه اړتیا لرم ډاډ ترلاسه کړم چې په کانټینر کې د کارونکي uid او gid د هغه کارونکي ID سره سمون لري چې کانټینر یې پیل کړی ، که نه نو د کانټینر لخوا رامینځته شوي فایلونه به د روټ حقونو سره رامینځته شي. که زه کاروم volume بیا به ډاټا په ساده ډول په ځینو کې رامینځته شي /usr/* او د uid او gid سره به ورته کیسه وي لکه په لومړۍ قضیه کې. که تاسو د دریمې ډلې برخې پیل کوئ، تاسو اړتیا لرئ اسناد ولولئ او د پوښتنې ځواب وګورئ: "په کوم کانټینر لارښود کې برخه فایلونه لیکي؟"

زه تل دا حقیقت نه خوښوم چې زه باید د ډیر وخت لپاره د ډاکر سره ټینکر وکړم په لومړي پړاو کې: ما وموندله چې څنګه کانټینرونه لانچ کړئ ، کوم عکسونه له کوم ځای څخه لانچ کړئ ، ماک فایلونه جوړ کړل چې د اوږدې ډاکر کمانډونو ته عرفونه لري. ما د ډاکر - کمپوز څخه نفرت وکړ ځکه چې زه نه غواړم د ډاکر ایکوسیستم کې بله وسیله زده کړم. او docker-compose up دا ما ځوروي، په ځانګړې توګه که دوی لاهم هلته ولیدل build ساختمانونه، د پخوا څخه راټول شوي انځورونو پر ځای. ټول هغه څه چې زه واقعیا غواړم یوازې یو محصول په مؤثره او ګړندۍ توګه جوړ کړم. مګر زه نشم موندلی چې څنګه د ډاکر وکاروم.

د ځواب وړ معرفي کول

پدې وروستیو کې (درې میاشتې دمخه) ، ما د DevOps ټیم سره کار وکړ ، چې نږدې هر غړی یې د ډاکر په وړاندې منفي چلند درلود. د دلایلو لپاره:

  • د ډاکر قواعد iptables (که څه هم تاسو کولی شئ دا په daemon.json کې غیر فعال کړئ)
  • ډاکر بګی دی او موږ به یې په تولید کې ونه چلوو
  • که چیرې ډاکر ډیمون غورځیږي ، نو ټول کانټینرونه د زیربنا حادثې سره مطابق
  • ډاکر ته اړتیا نشته
  • ولې ډاکر که ځواب ویونکی او مجازی ماشینونه شتون ولري

په ورته کار کې، زه د یوې بلې وسیلې سره اشنا شوم - ځواب ورکوونکی. ما د دې په اړه یو ځل اوریدلی، مګر ما هڅه نه ده کړې چې خپل د لوبو کتابونه ولیکم. او اوس ما د خپلو دندو لیکل پیل کړل او بیا زما لید په بشپړ ډول بدل شو! ځکه چې ما احساس وکړ: ځواب د ورته ډاکر کانټینرونو چلولو لپاره ماډلونه لري، د عکس جوړونه، شبکې، او نور، او کانټینرونه نه یوازې په محلي توګه، بلکې په لیرې پرتو سرورونو کې هم چلیدلی شي! زما خوښۍ هیڅ حد نه پوهیده - ما یو نورمال وسیله وموندله او زما د میک فایل او ډاکر - کمپوز فایلونه یې وغورځول ، دوی د یامل دندو سره ځای په ځای شوي. کوډ د ساختمانونو په کارولو سره کم شوی و loop, when، او نور

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

زه پدې وروستیو کې د ssh تونلونو سره آشنا شوم. دا معلومه شوه چې د ریموټ سرور بندر ځایی بندر ته "پرمختللو" خورا اسانه دی. ریموټ سرور کیدی شي یا په بادل کې یو ماشین وي یا یو مجازی ماشین وي چې په VirtualBox کې روان وي. که زما همکار یا زه ډیټابیس ته اړتیا ولرم (یا کوم بل دریم اړخ اجزا) ، موږ کولی شو په ساده ډول د دې برخې سره سرور پیل کړو او کله چې سرور ته اړتیا نه وي بند یې کړو. د پورټ فارورډینګ ورته تاثیر ورکوي لکه ډیټابیس چې په ډاکر کانټینر کې روان دی.

دا قومانده زما ځایی بندر د ریموټ سرور ته لیږدوي چې د پوسټګریسکیل چلوي:

ssh -L 9000: سیمه ایز کوربه: 5432 [ایمیل خوندي شوی]

د ریموټ سرور کارول د ټیم پراختیا سره ستونزه حل کوي. دا ډول سرور په یوځل کې د ډیری پراختیا کونکو لخوا کارول کیدی شي؛ دوی اړتیا نلري د پوسټګریسق ایل تنظیم کولو توان ولري ، د ډاکر او نورو پیچلتیاو پوه شي. په ریموټ سرور کې ، تاسو کولی شئ ورته ډیټابیس پخپله ډاکر کې نصب کړئ ، که چیرې د ځانګړي نسخه نصب کول ستونزمن وي. ټول پراختیا کونکي اړتیا لري د ssh لاسرسي چمتو کړي!

ما پدې وروستیو کې لوستل چې د SSH تونلونه د منظم VPN محدود فعالیت دی! تاسو کولی شئ په ساده ډول د OpenVPN یا نور VPN تطبیقونه نصب کړئ، زیربنا جوړه کړئ او پراختیا کونکو ته یې د کارولو لپاره ورکړئ. دا ډیر ښه دی!

خوشبختانه، AWS، GoogleCloud او نور تاسو ته د وړیا کارولو یو کال درکوي، نو دا وکاروئ! دوی ارزانه دي که تاسو یې د کارولو پرمهال بند کړئ. زه تل حیران وم چې ولې زه د ریموټ سرور ته اړتیا لرم لکه gcloud، داسې ښکاري چې ما دوی وموندل.

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

لاندینۍ کرښه: تاسو کولی شئ ډیټابیسونه او نور زیربنا توکي په ریموټ سرورونو یا مجازی بکس کې پرمخ وړئ. زه د دې موخو لپاره ډاکر ته اړتیا نلرم.

د ډاکر عکسونو او توزیع په اړه لږ څه

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

ایا تاسو هرچیرې لیدلي چیرې چې د سافټویر پراختیا کونکي خپل محصولات یوازې د ډاکر عکس کې پورټ کوي؟
د ډیری محصولاتو پایله د ځانګړي پلیټ فارم لپاره بائنری فایلونه دي؛ دوی په ساده ډول د ډاکر عکس کې اضافه شوي ، کوم چې د مطلوب پلیټ فارم څخه میراث شوی. ایا تاسو کله هم فکر کړی چې ولې په ډاکر هب کې ورته ورته عکسونه شتون لري؟ د مثال په توګه nginx داخل کړئ، تاسو به د مختلفو خلکو څخه 100500 انځورونه وګورئ. دې خلکو پخپله نګینکس نه دی رامینځته کړی ، دوی په ساده ډول د دوی ډاکر عکس کې رسمي نګینکس اضافه کړي او د کانټینرونو په لاره اچولو کې اسانتیا لپاره یې د خپلو تشکیلاتو سره موسم کړي.

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

لاندینۍ کرښه: زه د ډاکر راجسټری ته اړتیا نلرم، زه به یو ډول S3 وکاروم یا یوازې د فایل ذخیره لکه د ګوګل ډرایو / ډراپ باکس

ډاکر په CI کې

ټول هغه شرکتونه چې ما کار کړی دی ورته دي. دوی معمولا خوراکي توکي دي. دا دی، دوی یو غوښتنلیک لري، یو ټیکنالوژي سټک (ښه، شاید یو څو یا درې د پروګرام کولو ژبې).

دا شرکتونه په خپلو سرورونو کې ډاکر کاروي چیرې چې د CI پروسه پرمخ ځي. پوښتنه: تاسو ولې اړتیا لرئ په خپلو سرورونو کې د ډاکر کانټینر کې پروژې رامینځته کړئ؟ ولې یوازې د جوړونې لپاره چاپیریال چمتو نه کړئ ، د مثال په توګه ، د ځواب وړ لوبو کتاب ولیکئ چې د نوډجز ، پی ایچ پی ، jdk ، کاپي ssh کیلي ، او داسې نور اړین نسخې به سرور ته نصب کړي چیرې چې جوړونه به ترسره شي؟

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

  • بیا تاسو د جوړولو لپاره د ډاکر عکس ته اړتیا لرئ. تاسو اړتیا لرئ د عکس په لټه کې شئ یا خپل ډاکر فایل ولیکئ.
  • 90٪ چې تاسو اړتیا لرئ ځینې ssh کلیدونه وړاندې کړئ، پټ معلومات چې تاسو نه غواړئ د ډاکر عکس ته ولیکئ.
  • کانټینر جوړیږي او مړ کیږي، ټول زیرمې د هغې سره له لاسه ورکوي. راتلونکی جوړونه به د پروژې ټول انحصارونه بیا ډاونلوډ کړي، کوم چې د وخت مصرف او غیر موثر دی، او وخت پیسې دي.

پراختیا کونکي په ډاکر کانټینرونو کې پروژې نه جوړوي (زه یوځل داسې فین وم ، واقعیا ، زه په تیرو xD کې د ځان لپاره بخښنه احساس کوم). په جاوا کې دا ممکنه ده چې څو نسخې ولرئ او د یوې کمانډ سره یې هغه ته بدل کړئ چې اوس ورته اړتیا لرئ. دا په نوډج کې ورته دی، nvm شتون لري.

پایلې

زه باور لرم چې ډاکر خورا پیاوړی او انعطاف منونکی وسیله ده ، دا د هغې نیمګړتیا ده (عجیب ښکاري ، هو). د دې په مرسته، شرکتونه کولی شي په اسانۍ سره په دې کې ښکیل شي او د اړتیا په صورت کې یې وکاروي او اړتیا نلري. پراختیا کونکي خپل کانټینرونه ، د دوی ځینې چاپیریالونه په لاره اچوي ، بیا دا ټول په اسانۍ سره CI او تولید ته تیریږي. د DevOps ټیم د دې کانټینرونو چلولو لپاره یو ډول کوډ لیکي.

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

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

که تاسو لاهم د ډاکر کارولو پریکړه وکړئ ، نو:

  • ډیر محتاط اوسئ
  • پراختیا کونکي د ډاکر کارولو ته مجبور مه کوئ
  • د دې کارول په یو ځای کې ځایي کړئ، دا په ټولو Dockfile او docker-compose repositories کې مه خپروئ

PS:

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

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

Add a comment