Ҳамаи фармонҳо дар 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 дастурҳо ва тартиби фармонҳо барои истифодаи беҳтари кеш равона аст.