Sobes.tech
Junior

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