Ուղեցույցներ

Ի՞նչ է Docker-ը։ Կոնտեյներները ոչ ծրագրավորողների համար բացատրված

Docker-ը գործիք է, որը հավելվածը փաթեթավորում է այն ամենի հետ, ինչ անհրաժեշտ է նրան աշխատելու համար՝ լեզվի ճիշտ տարբերակով, գրադարաններով, համակարգային գործիքներով և կարգավորումներով, մի ստանդարտ միավորի մեջ, որը կոչվում է կոնտեյներ։ Կոնտեյները նույն կերպ է աշխատում մշակողի նոութբուքում, թեստային սերվերում կամ ամպային հոստում, ինչը վերացնում է դասական «բայց իմ մեքենայի վրա աշխատում էր» խնդիրը։ Կոնտեյներ կառուցելու բաղադրատոմսը կարճ տեքստային ֆայլ է, որը կոչվում է Dockerfile։

Ինչու է Docker-ը կարևոր, երբ կառուցում եք AI-ով

Եթե ձեր հավելվածն ունի հետին մաս՝ API Python-ով, Node-ով, C#-ով կամ Java-ով, այն պետք է աշխատի մի տեղ, որտեղ հենց ճիշտ ծրագրային ապահովումն է տեղադրված։ Docker-ը ամենատարածված միջոցն է դա կրկնելի դարձնելու համար։

  • Հետին մասի տեղակայում։ Շատ հոստեր, այդ թվում՝ Mythex-ը, հետին մասը տեղակայում են՝ կառուցելով կոնտեյներ Dockerfile-ից։ Mythex-ում «C# Web API» կամ «Java հետին մաս» խնդրելը ձեզ տալիս է հավելվածը և Dockerfile-ը, իսկ Publish-ը կառուցում է image-ը և տեղակայում այն (API հետին մասեր)։
  • Հարթակից հեռանալը։ Եթե արտահանում եք AI-ով կառուցված հավելված, Dockerfile-ը շատ ավելի հեշտ է դարձնում այն մեկ այլ հոստում գործարկելը։ Տե՛ս ինչպես արտահանել և ինքնահոստել AI-ով կառուցված հավելվածը։
  • Մշակողների հետ աշխատելը։ Ձեր նախագծին միացած մշակողը ամբողջ հավելվածը մեկ-երկու հրամանով կարող է սկսել՝ օրեր չծախսելով ամեն ինչ տեղադրելու վրա։

Ամենօրյա անալոգիա՝ տրանսպորտային կոնտեյներներ

Ստանդարտ տրանսպորտային կոնտեյներներից առաջ բեռը բեռնվում էր կտոր առ կտոր՝ պարկեր, տակառներ, արկղեր, և յուրաքանչյուր նավահանգիստ դա տարբեր կերպ էր վարվում։ Ստանդարտ պողպատե կոնտեյները փոխեց դա․ փաթեթավորեք մեկ անգամ, և ցանկացած նավ, ամբարձիչ, գնացք կամ բեռնատար կարող է այն տեղափոխել՝ առանց հոգալու, թե ինչ կա ներսում։

Docker-ն անում է նույնը ծրագրային ապահովման համար․

  • Dockerfile-ը փաթեթավորման ցանկն է և հրահանգները։
  • Image-ը կնքված, փաթեթավորված կոնտեյները։
  • Աշխատող կոնտեյները այդ արկղն է, որ աշխատում է նավի վրա՝ այստեղ, սերվերի։
  • Docker Engine-ը ամբարձիչն ու նավն է․ սերվերի վրա գտնվող ծրագրային ապահովումը, որը գիտի, թե ինչպես գործարկել ցանկացած կոնտեյներ։

Ինչպես է աշխատում Docker-ը

ՄասԻնչ է
DockerfileՏեքստային ֆայլ՝ image-ը կառուցելու քայլ առ քայլ հրահանգներով։
ImageՄիայն կարդալու փաթեթ՝ օպերացիոն համակարգի հիմունքներ, գործարկման միջավայր, գրադարաններ և ձեր կոդը։
ԿոնտեյներImage-ի աշխատող օրինակ, մեկուսացված նույն մեքենայի մյուս հավելվածներից։
RegistryՏեղ՝ image-ները պահելու և կիսելու համար, օրինակ՝ Docker Hub կամ ամպային մատակարարի registry-ը։
Docker EngineՖոնային ծառայություն, որ կառուցում է image-ները և գործարկում կոնտեյներները։ Անվճար և բաց կոդով։
Docker DesktopMac, Windows և Linux հավելված, որ փաթեթավորում է միջուկը գրաֆիկական ինտերֆեյսով։

Կոնտեյներներ ընդդեմ վիրտուալ մեքենաների․ վիրտուալ մեքենան ձևացնում է, թե ամբողջական առանձին համակարգիչ է սեփական օպերացիոն համակարգով, ուստի ծանր է և դանդաղ է գործարկվում։ Կոնտեյները կիսում է հոստի օպերացիոն համակարգի միջուկը և մեկուսացնում է միայն հավելվածը և նրա ֆայլերը, ուստի սովորաբար վայրկյանների ընթացքում է գործարկվում և շատ ավելի քիչ հիշողություն օգտագործում։ Շատ կոնտեյներներ կարող են կողք կողքի աշխատել մեկ սերվերի վրա։

Օրինակ աշխատանքում․ փոքր Python API

Նշենք, որ ձեր AI կառուցիչը ամրագրման հավելվածի համար ստեղծել է Python FastAPI հետին մաս։ Dockerfile-ը կարող է այսպիսի տեսք ունենալ․

FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

Տող առ տող՝

ՏողԻնչ է անում
FROM python:3.12-slimՍկսում է պաշտոնական image-ից, որում արդեն տեղադրված է Python 3.12։
WORKDIR /appԱշխատում է կոնտեյների /app թղթապանակում։
COPY requirements.txt . և RUN pip install ...Պատճենում և տեղադրում է requirements.txt-ում թվարկված գրադարանները։
COPY . .Պատճենում է հավելվածի սեփական կոդը։
EXPOSE 8000Նշում է, որ հավելվածը լսում է 8000 պորտը։
CMD [...]Հրաման, որ գործարկում է վեբ սերվերը, երբ կոնտեյները աշխատում է։

Պարզ խոսքով․ «Սկսիր Python 3.12-ով։ Տեղադրիր requirements.txt-ում թվարկված գրադարանները։ Պատճենիր կոդը։ Գործարկիր վեբ սերվերը 8000 պորտում։»

Մշակողը (կամ հոստինգային հարթակը) ապա գործարկում է երկու հրաման․

docker build -t booking-api .
docker run -p 8000:8000 booking-api

Առաջինը կառուցում է image-ը և անվանում այն booking-api։ Երկրորդը գործարկում է կոնտեյներ և միացնում մեքենայի 8000 պորտը կոնտեյների ներսի 8000 պորտին։ API-ն այժմ աշխատում է այնպես, ինչպես կաշխատի ցանկացած սերվերի վրա, որը ունի Docker։

Նկատեք, թե ինչ չկա image-ի մեջ․ գաղտնաբառեր և API բանալիներ։ Դրանք փոխանցվում են կոնտեյները գործարկելիս՝ որպես միջավայրի փոփոխականներ, այնպես որ նույն image-ը կարող է աշխատել թեստավորման և արտադրության մեջ՝ տարբեր կարգավորումներով։

Հիմնական տերմիններ

ՏերմինՆշանակություն
ԿոնտեյներՄեկուսացված, աշխատող փաթեթ՝ հավելվածով և նրա կախվածություններով։
ImageՁևանմուշ, որից գործարկվում է կոնտեյները։
Բազային image (base image)Dockerfile-ի FROM տողի սկզբնական կետը, օրինակ՝ python:3.12-slim կամ node:22։
Շերտ (layer)Dockerfile-ի յուրաքանչյուր քայլ ավելացնում է քեշավորված շերտ, ինչը արագացնում է վերակառուցումը։
Պորտերի քարտեզագրումՀոստի պորտը միացնել կոնտեյների ներսի պորտին։
Հատոր (volume)Պահեստ, որ գոյատևում է, երբ կոնտեյները փոխարինվում է։ Կոնտեյներները իրենք նետվող են։
Docker ComposeՖայլ, որ նկարագրում է մի քանի միասին աշխատող կոնտեյներ, օրինակ՝ API և տվյալների բազա։
KubernetesՀամակարգ բազմաթիվ կոնտեյներներ բազմաթիվ սերվերների վրա գործարկելու համար։ Փոքր հավելվածների մեծ մասին այն պետք չէ։

Տարածված սխալ պատկերացումներ

  • «Docker-ը վիրտուալ մեքենա է»։ Այն ավելի թեթև է․ կոնտեյներները կիսում են հոստի միջուկը։
  • «Կոնտեյների ներսում պահված տվյալները ապահով են»։ Կոնտեյներները նախատեսված են նետվելու և փոխարինվելու համար։ Այն, ինչ պետք է մնա՝ օգտատիրոջ տվյալները, վերբեռնումները, պետք է լինի տվյալների բազայում, ֆայլերի պահեստում կամ հատորում։
  • «Գաղտնիքները Dockerfile-ում դնելը նորմալ է, քանի որ այն մասնավոր է»։ Image-ները կիսվում են և հրվում registry-ներ։ Փոխանցեք գաղտնիքները գործարկման ժամանակ։
  • «Docker-ը հավելվածն անվտանգ է դարձնում»։ Մեկուսացումն օգնում է, բայց հնացած ծրագրակազմ թույլ կարգավորումներով աշխատող կոնտեյները դեռ խոցելի է։
  • «Յուրաքանչյուր հավելվածին Docker է պետք»։ Ստատիկ կայքը կամ պարզ առջևի մասը սովորաբար հոստվում է որպես սովորական ֆայլեր, առանց կոնտեյների ընդհանրապես։
  • «Docker Desktop-ն ամենքի համար անվճար է»։ Միջուկն անվճար է․ Docker Desktop-ը պահանջում է վճարովի բաժանորդագրություն ավելի մեծ ընկերությունների համար, ըստ Docker-ի պայմանների։

Ինչ հարցնել ձեր AI կառուցիչից

  • «Այս հավելվածին Dockerfile պե՞տք է։ Եթե այո, բացատրիր յուրաքանչյուր տող պարզ լեզվով։»
  • «Օգտագործիր փոքր, պաշտոնական բազային image և ամրացրու լեզվի տարբերակը։»
  • «Պահիր գաղտնիքները image-ից դուրս։ Կարդա դրանք միջավայրի փոփոխականներից գործարկման ժամանակ։»
  • «Ապահովիր, որ վերբեռնումները և տվյալները պահվում են տվյալների բազայում կամ ֆայլերի պահեստում, ոչ թե կոնտեյների ներսում։»
  • «Ավելացրու Docker Compose ֆայլ, որ մշակողը կարողանա տեղում գործարկել առջևի մասը, API-ն և տվյալների բազան մեկ հրամանով։»
  • «Ավելացրու առողջության ստուգման վերջնակետ, որ հոստը կարողանա պարզել, արդյոք API-ն աշխատում է։»

Docker-ը Mythex-ում

Mythex-ը օգտագործելու համար Docker տեղադրել կամ գործարկել պետք չէ։ Ձեր նախագիծը աշխատում է մասնավոր ամպային sandbox-ում, և երբ խնդրում եք հետին մաս, որին կոնտեյներ է պետք՝ օրինակ՝ C#, Java կամ սովորական Node կամ Python ծառայություն, Mythex-ը գրում է հավելվածը և Dockerfile-ը, նախադիտում է այն sandbox-ում և տեղակայում է հրապարակման ժամանակ, առանց հոստինգի կարգավորման (ինչպես է ընտրվում տեխնոլոգիան)։ Pro-ում կարող եք արտահանել նախագիծը կամ համաժամացնել այն GitHub-ի հետ և վերցնել Dockerfile-ը ձեզ հետ։ Այն մասին, թե ինչպես են հետին և առջևի մասերը միանում իրար, տե՛ս առջևի և հետին մաս։

Հարցեր

Ի՞նչ է Docker-ը պարզ տերմիններով։

Docker-ը գործիք է, որը հավելվածը փաթեթավորում է այն ամենի հետ, ինչ անհրաժեշտ է նրան աշխատելու համար՝ լեզվի գործարկման միջավայրով, գրադարաններով և կարգավորումներով, ստանդարտ միավորի մեջ, որը կոչվում է կոնտեյներ։ Կոնտեյները նույն կերպ է աշխատում նոութբուքում, թեստային սերվերում կամ ամպային հոստում։

Ո՞րն է տարբերությունը Docker image-ի և կոնտեյների միջև։

Image-ը փաթեթավորված, միայն կարդալու ձևանմուշն է՝ հավելվածը և նրա կախվածությունները, որոնք կառուցվում են Dockerfile-ից։ Կոնտեյները այդ image-ի աշխատող պատճենն է։ Մեկ image-ից կարող եք գործարկել բազմաթիվ կոնտեյներներ։

Արդյո՞ք Docker-ը վիրտուալ մեքենա է։

Ոչ։ Վիրտուալ մեքենան մոդելավորում է ամբողջ համակարգիչը սեփական օպերացիոն համակարգով։ Կոնտեյներները կիսում են հոսթ մեքենայի օպերացիոն համակարգի միջուկը և մեկուսացնում միայն հավելվածը, ուստի ավելի արագ են գործարկվում և ավելի քիչ հիշողություն են օգտագործում։

Արդյո՞ք Docker-ն անվճար է։

Docker Engine-ը՝ միջուկը, որը գործարկում է կոնտեյներները, անվճար է և բաց կոդով։ Docker-ի պայմանների համաձայն՝ 2026 թվականի սեպտեմբերից Docker Desktop-ը անվճար է ոչ առևտրային բաց կոդով նախագծերի և 250-ից պակաս աշխատակից ու տարեկան 10 միլիոն ԱՄՆ դոլարից ցածր եկամուտ ունեցող ընկերությունների համար․ ավելի մեծ ընկերությունները պետք է ունենան վճարովի բաժանորդագրություն։

Պե՞տք է սովորել Docker-ը, որպեսզի AI-ով հավելված կառուցեմ։

Սովորաբար՝ ոչ։ Շատ AI կառուցիչներ կոնտեյներները կառավարում են ձեր փոխարեն։ Օգտակար է իմանալ, թե ինչ է Dockerfile-ը, որպեսզի հասկանաք, թե ինչպես է հետին մասը փաթեթավորված, և որ կարողանաք հավելվածը գործարկել այլ տեղ, եթե այն արտահանեք։

Mythex · Pricing · Կառուցեք ամեն ինչ AI-ով · Կաղապարներ կայքերի և հավելվածների համար · Mythex-ի համեմատությունները · AI-ով հավելվածների ստեղծման բառարան · Անվճար գործիքներ AI-ով հավելվածներ ստեղծելու համար · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)