Sobes.tech
Junior

Vai visas komandas Dockerfile veido slāņus?

sobes.tech AI

Atbilde no AI

Jā. Katra instrukcija Dockerfile izveido jaunu slāni attēlā, izņemot piemēram, ARG, LABEL, ENV. Šīs instrukcijas tikai pievieno metadatus vai vides mainīgos, neietekmējot failu sistēmas slāņa saturu.

Svarīgas instrukcijas, kas veido slāņus:

  • FROM: Pamatattēls, no kura sākas būvniecība.
  • RUN: Komandu izpilde konteinerā. Katrs RUN ir atsevišķs slānis. Komandu apvienošana vienā RUN ar && samazina slāņu skaitu.
  • COPY: Failu un direktoriju kopēšana no hosta uz konteineru.
  • ADD: Līdzīgi kā COPY, bet arī var izvilkt arhīvus un lejupielādēt failus caur URL.
  • WORKDIR: Darba direktorijas maiņa nākamajiem norādījumiem.
  • VOLUME: Montāžas punkta izveide.

Piemērs, kā demonstrēt slāņus būvniecības laikā:

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;"]

Veidojot šo Dockerfile, katra instrukcija FROM, RUN, COPY, WORKDIR, CMD (lai gan CMD un ENTRYPOINT tehniski neveido slāni failu sistēmā, tie veido konfigurācijas slāni) veido savu slāni, ko Docker kešē. Dažādi instrukciju tipi un to ietekme uz slāņiem:

Instrukcija Veido slāni failu sistēmā? Ietekme
FROM Pamatattēls
RUN Komandu izpilde
COPY Failu kopēšana
ADD Failu kopēšana (ar papildu iespējām)
WORKDIR Direktoru maiņa
ENV Vides mainīgo iestatīšana
ARG Būvniecības argumentu definēšana
LABEL Metadatu pievienošana
VOLUME Montāžas punktu definēšana
USER Lietotāja izvēle
EXPOSE Poļu paziņošana
ENTRYPOINT Izpildāma faila konfigurācija
CMD Komandas konfigurācija konteinerim

Mazāk slāņu padara attēlus vieglākus un ātrākus būvēt, uzlabojot kešošanu un samazinot izmēru. Dockerfile optimizācija bieži ietver RUN instrukciju skaita samazināšanu un komandu secības optimizāciju, lai maksimāli izmantotu kešu.