کوچني ډاکر عکسونه چې په ځان باور لري *

[د امریکایی ماشومانو د افسانې کیسه "کوچنی انجن چې کولی شي" ته مراجعه وکړي - نږدې. لین]*

کوچني ډاکر عکسونه چې په ځان باور لري *

څنګه په اتوماتيک ډول ستاسو د اړتیاو لپاره کوچني ډاکر عکسونه رامینځته کړئ

غیر معمولي جنون

د تیرو څو میاشتو لپاره ، زه پدې اړه لیوال وم چې د ډاکر عکس څومره کوچنی کیدی شي او لاهم غوښتنلیک پرمخ وړي؟

زه پوهیږم، نظر عجیب دی.

مخکې له دې چې زه توضیحاتو او تخنیکونو ته لاړ شم، زه غواړم تشریح کړم چې ولې دې ستونزې ما ډیر ځوروي، او دا څنګه تاسو اندیښنه لري.

ولې اندازه مهمه ده

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

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

مهرباني وکړئ په یاد ولرئ: که تاسو د اندازې په اړه اندیښمن یاست ، الپین پخپله کوچني ښکاري او احتمال به تاسو سره مناسب وي.

بې وسه انځورونه

پروژه بې وسه د لومړني "خراب" عکسونو انتخاب وړاندیز کوي ، دوی د بسته بندۍ مدیران ، مرمۍ او نور اسانتیاوې نلري چې تاسو د کمانډ لاین کې لیدلو سره عادت یاست. د پایلې په توګه ، د بسته بندۍ مدیران وکاروئ لکه pip и apt کار نه کوي:

FROM gcr.io/distroless/python3
RUN  pip3 install numpy

ډاکر فایل د Python 3 بې ثباته عکس په کارولو سره

Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM gcr.io/distroless/python3
 ---> 556d570d5c53
Step 2/2 : RUN  pip3 install numpy
 ---> Running in dbfe5623f125
/bin/sh: 1: pip3: not found

پیپ په عکس کې نه دی

معمولا دا ستونزه د څو مرحلې جوړونې لخوا حل کیږي:

FROM python:3 as builder
RUN  pip3 install numpy

FROM gcr.io/distroless/python3
COPY --from=builder /usr/local/lib/python3.7/site-packages /usr/local/lib/python3.5/

د څو پړاوونو مجلس

پایله د 130MB په اندازې کې یو عکس دی. ډیر بد نه دی! د پرتله کولو لپاره: د پایتون ډیفالټ عکس 929MB وزن لري ، او "پتلی" یو (3,7-slim) - 179MB، د الپین انځور (3,7-alpine) 98,6MB دی، پداسې حال کې چې په مثال کې کارول شوي بیس بې ثباته انځور 50,9MB دی.

دا سمه ده چې په ګوته کړئ چې په تیرو مثال کې موږ ټول لارښود کاپي کوو /usr/local/lib/python3.7/site-packages، کوم چې ممکن انحصار ولري چې موږ ورته اړتیا نلرو. که څه هم دا روښانه ده چې د ټولو موجود Python بیس عکسونو اندازه توپیر لري.

د لیکلو په وخت کې، ګوګل ډیسټرولیس د ډیری عکسونو ملاتړ نه کوي: جاوا او پایتون لاهم په تجربوي مرحله کې دي، او پایتون یوازې د 2,7 او 3,5 لپاره شتون لري.

کوچني انځورونه

د کوچني عکسونو رامینځته کولو سره زما جنون ته بیرته.

په عموم کې، ما غوښتل وګورم چې څنګه بې ثباته انځورونه جوړ شوي. بې ثباته پروژه د ګوګل جوړونې وسیله کاروي bazel. په هرصورت، د بازل نصب کول او ستاسو د خپلو عکسونو لیکل ډیر کار واخیست (او ریښتیني وو، د څرخ بیا رغول ساتیري او تعلیمي دي). ما غوښتل د کوچنیو انځورونو جوړول ساده کړم: د انځور جوړولو عمل باید خورا ساده وي، banal. نو دا چې ستاسو لپاره د تشکیلاتو فایلونه شتون نلري ، په کنسول کې یوازې یوه کرښه: просто собрать образ для <приложение>.

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

FROM scratch

سکریچ انځور

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

اوس موږ اړتیا لرو چې په یو ډول دا انحصار راټول کړو. موجوده وسایل لکه apt تاسو ته اجازه درکوي کڅوړې ډاونلوډ کړئ، مګر دا د اوسني ماشین سره تړلي دي او په هرصورت، د وینډوز یا MacOS ملاتړ نه کوي.

نو ما د خپل وسیله جوړولو لپاره پیل وکړ چې په اتوماتيک ډول به د کوچني ممکنه اندازې اساس عکس رامینځته کړي او هر غوښتنلیک هم پرمخ بوځي. ما د Ubuntu/Debian کڅوړې کارولې، یو انتخاب یې کړی (مستقیم د زیرمو څخه کڅوړې ترلاسه کول) او په تکراري توګه د دوی انحصار وموندل. برنامه باید په اوتومات ډول د کڅوړې وروستۍ مستحکم نسخه ډاونلوډ کړي ، د امکان تر حده د امنیت خطرونه کم کړي.

ما وسیله نوم کړه fetchyځکه چې هغه ... لټوي او راوړي ... څه ته اړتیا لري [له انګلیسي څخه "راوستل"، "راوستل" - نږدې. لین]. وسیله د کمانډ لاین انٹرفیس له لارې کار کوي ، مګر په ورته وخت کې API وړاندیز کوي.

په کارولو سره د عکس راټولولو لپاره fetchy (راځئ چې دا ځل د Python عکس واخلو)، تاسو یوازې د دې په څیر CLI کارولو ته اړتیا لرئ: fetchy dockerize python. تاسو ممکن د هدف عملیاتي سیسټم او کوډ نوم لپاره وپوښتل شي ځکه چې fetchy اوس مهال یوازې د Debian او Ubuntu پر بنسټ کڅوړې کاروي.

اوس تاسو کولی شئ غوره کړئ چې کوم انحصار ته اړتیا نشته (زموږ په شرایطو کې) او خارج یې کړئ. د مثال په توګه، Python په پرل پورې اړه لري، که څه هم دا د پرل نصب پرته ښه کار کوي.

پایلې

د Python عکس د کمانډ په کارولو سره رامینځته شوی fetchy dockerize python3.5 یوازې 35MB وزن لري (زه ډاډه یم چې په راتلونکي کې دا حتی روښانه کیدی شي). دا معلومه شوه چې موږ د بې ثباته عکس څخه بل 15 WW لرې کړو.

تاسو کولی شئ ټول هغه عکسونه وګورئ چې تر دې دمه راټول شوي دلته.

پروژه - دلته.

که تاسو ځانګړتیاوې له لاسه ورکوئ، یوازې یوه غوښتنه جوړه کړئ - زه به د مرستې کولو لپاره خوشحاله یم :) حتی نور، زه اوس مهال د نورو بسته بندي مدیرانو سره یوځای کولو لپاره کار کوم، نو د څو مرحلو جوړونو ته اړتیا نشته.

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

Add a comment