Sobes.tech
Junior

Ի՞նչ նպատակով են օգտագործվում կոնտեյներները։

sobes.tech AI

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

Կոնտեյներները օգտագործվում են հավելվածի և նրա բոլոր կախվածությունների (կոդ, գրադարաններ, կոնֆիգուրացիոն ֆայլեր) փաթեթավորման համար՝ ստանդարտացված, մեկուսացված մոդուլ, որը կարող է գործարկվել ցանկացած միջավայրում։ Օգտագործման հիմնական նպատակները՝

  • Մեկուսացում: Յուրաքանչյուր հավելված աշխատում է մեկուսացված միջավայրում, առանց մյուսների կամ հիմնական համակարգի վրա ազդեցության։
  • Տարածվածություն: Մի միջավայրում հավաքված կոնտեյներն ապահովում է, որ այն նույն կերպ աշխատի ցանկացած այլ միջավայրում, որտեղ տեղադրված է համատեղելի կոնտեյներային շարժիչը (օրինակ՝ Docker)։
  • Վերարտադրելիություն: Հավելվածի գործարկման միջավայրը դառնում է որոշակի, ինչը վերացնում է «աշխատում է իմ մեքենայով» խնդիրը։
  • Կախվածությունների կառավարում: Բոլոր անհրաժեշտ գրադարաններն ու կախվածությունները փաթեթավորվում են հավելվածի հետ։
  • Արդյունավետ ռեսուրսների օգտագործում: Կոնտեյներները ավելի թեթև են ռեսուրսների օգտագործման առումով, քան վիրտուալ մեքենաները, քանի որ համատեղ օգտագործում են օպերացիոն համակարգի միջուկը։
  • Տեղադրանքի արագացում: Կոնտեյների հավաքման և գործարկման գործընթացը շատ ավելի արագ է, քան լիարժեք վիրտուալ մեքենայի ստեղծումը և կարգավորումը։
  • Միկրոսերվիսային ճարտարապետության աջակցություն: Կոնտեյներները հիանալի են միկրոսերվիսների տեղակայման և կառավարման համար։
  • Անփոփոխ ենթակառուցվածք (Immutable Infrastructure): Փոխարենը՝ արդիականացնելով առկա սերվերները, տեղադրվում են նոր կոնտեյներներ նոր տարբերակով։

Օրինակ՝ Dockerfile- ի համար պարզ Python Flask հավելվածի համար՝

# Օգտագործում ենք Ubuntu բազային պատկերը
FROM ubuntu:latest

# Տեղադրում ենք Python և pip
RUN apt-get update && apt-get install -y python3 python3-pip

# Տեղադրում ենք կախվածությունները requirements.txt- ից
COPY requirements.txt /app/
WORKDIR /app
RUN pip3 install --no-cache-dir -r requirements.txt

# Կատարվում է հավելվածի կոդի պատճենում
COPY app.py /app/

# Բացվում է այն պորտը, որը լսում է հավելվածը
EXPOSE 5000

# Կառավարական հրահանգ՝ հավելվածի գործարկում
CMD ["python3", "app.py"]