Sobes.tech
Junior

Ի՞նչ է պատկերը (իմիջը) կոնտեյներացման համատեքստում և ինչ մակարդակներ (պատկերներ) կան պատկերի մեջ։

sobes.tech AI

Պատասխան AI-ից

Կոնտեյներիզացիայում պատկերը (կամ պատկերակը) անփոփոխ, թեթև, ինքնուրույն, գործարկելի ծրագրային փաթեթ է, որը ներառում է ամեն ինչ, ինչ անհրաժեշտ է հավելվածի գործարկման համար. կոդ, գործարկման միջավայր, համակարգի գործիքներ, գրադարաններ և կարգավորումներ: Իրականում դա է ֆայլային համակարգի և կոնֆիգուրացիայի « snapshots », որոնցից ստեղծվում են կոնտեյներները:

Պատկերի (կամ պատկերակի) շերտերը (շերտեր) առանձին, միայն ընթերցանության համար նախատեսված ֆայլային համակարգեր են, որոնք կազմում են պատկերը: Յուրաքանչյուր շերտ ներկայացնում է փոփոխությունների հավաքածու նախորդ շերտի նկատմամբ: Դրանք կառուցվում են մեկը մյուսի վրա, ձևավորելով ամբողջական ֆայլային համակարգը պատկերի համար: Շերտերի առավելությունները՝

  • Արդյունավետություն: Շերտերը պահվում են կեշում և կրկնակի օգտագործվում են պատկերի միջև, ինչը նվազեցնում է սկավառակի տարածքը և արագացնում կառուցումը:
  • Մոդուլայնություն: Հավելվածում կամ հիմնական օպերացիոն համակարգում փոփոխությունները ազդում են միայն վերևի շերտի վրա, առանց ներքևի շերտերի փոփոխության:
  • Կիսում: Մի քանի պատկերը կարող են օգտագործել ընդհանուր հիմնական շերտեր, օրինակ՝ օպերացիոն համակարգի շերտը:

Տիպիկ շերտերի կառուցվածքը՝

  1. Հիմնական շերտ: Սովորաբար պարունակում է օպերացիոն համակարգի նվազագույն պատկերը (օրինակ՝ Alpine, Ubuntu Base):
  2. Հետևյալ շերտեր: Ավելացվում են պակետներ, ինչպիսիք են գրադարանները, ինտերպրետատորները (օրինակ՝ Python, Node.js):
  3. Հավելվածի շերտ: Ավելացվում է հավելվածի կոդը:
  4. Կարգավորումների/մետադատվությունների շերտ: Նկարագրում է, թե ինչպես պետք է գործարկվի հավելվածը (ENTRYPOINT, CMD):

Յուրաքանչյուր հրահանգ Dockerfile-ում սովորաբար ստեղծում է նոր շերտ: Օրինակ, RUN հրամանը կատարում է հրահանգներ և պահում արդյունքը որպես նոր շերտ:

# Հիմնական շերտ
FROM ubuntu:latest

# Հետևյալ շերտեր
RUN apt-get update && apt-get install -y curl

# Հավելվածի շերտ
COPY . /app
WORKDIR /app

# Կարգավորումների շերտ
CMD ["node", "app.js"]