Կատարում են բոլոր հրահանգները Dockerfile-ում շերտեր?
sobes.tech AI
Պատասխան AI-ից
Այո։ Յուրաքանչյուր հրահանգ Dockerfile- ում ստեղծում է նոր շերտ պատկերի մեջ, բացի օրինակներից՝ ARG, LABEL, ENV: Այս հրահանգները միայն ավելացնում են մետադատված կամ շրջակա միջավայրի փոփոխականներ, որոնք չեն ազդում շերտի ֆայլային համակարգի բովանդակության վրա:
Նպաստող հրահանգներ, որոնք ստեղծում են շերտեր՝
- FROM: Հիմնական պատկերը, որի վրա սկսվում է կառուցումը:
- RUN: Կատարում հրահանգներ կոնտեյներով: Ամեն
RUNհրահանգը՝ առանձին շերտ: Համատեղելով հրահանգները մեկRUN-ում&&-ով՝ կարելի է նվազեցնել շերտերի քանակը: - COPY: Ֆայլեր և დირექტորիաներ պատճենել հոստից կոնտեյներին:
- ADD: Դիմում է
COPY-ին, բայց նաև կարող է հանել արխիվներ և ներբեռնել ֆայլեր URL-ներից: - WORKDIR: Փոխել աշխատանքային დირექტորիան հաջորդ հրահանգների համար:
- VOLUME: Ստեղծել մոնտաժման կետ:
Նմուշ՝ շերտերի ցուցադրում կառուցման ժամանակ:
FROM ubuntu:latest
RUN apt-get update && apt-get install -y nginx
COPY index.html /var/www/html/
WORKDIR /app
CMD ["nginx", "-g", "daemon off;"]
Այս Dockerfile- ի կառուցման ժամանակ յուրաքանչյուր հրահանգ՝ FROM, RUN, COPY, WORKDIR, CMD (չնայած CMD և ENTRYPOINT տեխնիկապես չեն ստեղծում շերտ ֆայլային համակարգում, նրանք ստեղծում են կոնֆիգուրացիոն շերտ), ձևավորում է իր շերտը, որը Docker- ը կեշավորում է: Տարբեր հրահանգների տեսակներ և դրանց ազդեցությունը շերտերի վրա՝
| Հրահանգ | Ստեղծում է ֆայլային համակարգի շերտ? | Տպավորություն |
|---|---|---|
FROM |
Այո | Հիմնական պատկերը |
RUN |
Այո | Հրամանների կատարմամբ |
COPY |
Այո | Ֆայլերի պատճենում |
ADD |
Այո | Ֆայլերի պատճենում (ավելացված հնարավորություններով) |
WORKDIR |
Այո | Դիրեկտորիայի փոփոխում |
ENV |
Ոչ | Շրջակա միջավայրի փոփոխականների սահմանում |
ARG |
Ոչ | Կառուցման արգումենտների սահմանում |
LABEL |
Ոչ | Մետադատվածների ավելացում |
VOLUME |
Այո | Մոնտաժման կետերի սահմանում |
USER |
Այո | Օգտագործողի ընտրություն |
EXPOSE |
Ոչ | Պորտերի հայտարարում |
ENTRYPOINT |
Ոչ | Կատարման ֆայլի կարգավորում |
CMD |
Ոչ | Կոնտեյների համար հրամանի կարգավորում |
Փոքր շերտերի քանակը դարձնում է պատկերները ավելի թեթև և արագ կառուցվող՝ բարելավելով կեշավորումը և նվազեցնելով պատկերների չափը: Dockerfile-ի օպտիմալիզացիան հաճախ սահմանափակվում է RUN հրահանգների քանակի նվազեցմամբ և հրահանգների հերթականությամբ՝ առավելագույն կեշ օգտագործելու համար։