„COPY“ ir „ADD“ komandų skirtumų supratimas „Docker“ faile

Dockerfile

Paaiškintos „Dockerfile“ komandos

Komandos „COPY“ ir „ADD“ „Dockerfile“ yra skirtos failams įterpti į jūsų sudėtinio rodinio failų sistemą, tačiau jos turi skirtingas funkcijas ir geriausio naudojimo scenarijus. Norint efektyviai valdyti „Dockerfile“ ir užtikrinti, kad konteinerinės programos veiktų taip, kaip tikėtasi, būtina suprasti šiuos skirtumus.

Nors „COPY“ pirmiausia naudojama paprastam failų kopijavimui, „ADD“ siūlo papildomų galimybių, pvz., tvarkyti nuotolinius URL ir išgauti suspaustus failus. Šiame straipsnyje bus nagrinėjami kiekvienos komandos niuansai ir nurodoma, kada naudoti vieną prieš kitą, kad optimizuotumėte „Docker“ versijas.

komandą apibūdinimas
FROM Nurodo pagrindinį vaizdą, kuris bus naudojamas kuriamam Docker vaizdui.
WORKDIR Nustato darbo katalogą konteinerio viduje.
COPY Kopijuoja failus arba katalogus iš pagrindinio kompiuterio į konteinerio failų sistemą.
ADD Prideda failus, katalogus arba nuotolinius URL prie sudėtinio rodinio failų sistemos ir gali tvarkyti failų ištraukimą.
RUN Vykdo komandą konteinerio aplinkoje.
EXPOSE Informuoja Docker, kad konteineris klausosi nurodytų tinklo prievadų vykdymo metu.

Išsamus Dockerfile komandų paaiškinimas

Pirmasis scenarijus parodo, kaip naudojamas komanda Dockerfile. The instrukcija yra paprasta ir naudojama failams arba katalogams kopijuoti iš pagrindinės sistemos į Docker konteinerio failų sistemą. Šiame pavyzdyje scenarijus prasideda komanda, kuri nurodo pagrindinį vaizdą kaip python:3.8-slim-buster . The komanda nustato darbo katalogą konteinerio viduje į . Po to seka komanda, kuri nukopijuoja dabartinio pagrindinio kompiuterio katalogo turinį į /app katalogą konteineryje. Nukopijavus failus, komanda naudojama norint įdiegti būtinus Python paketus, nurodytus failą. Galiausiai, komanda padaro 80 prievadą prieinamą išoriniam pasauliui.

Priešingai, antrasis scenarijus pabrėžia naudojimą komanda Dockerfile. Panašiai kaip ir pirmasis scenarijus, jis prasideda komanda nustatyti pagrindinį vaizdą ir komandą darbo katalogui apibrėžti. Pagrindinis skirtumas čia yra ADD komanda, kuri naudojama failams pridėti iš nuotolinio URL, šiuo atveju, . The komanda ne tik kopijuoja failus, bet ir turi galimybę automatiškai išgauti suglaudintus failus, kaip parodyta toliau komanda, kuri ištraukia archive.tar.gz failą į katalogas. Po to, komanda įdiegia reikiamus Python paketus ir komanda padaro prieinamą 80 prievadą.

COPY naudojimas Docker faile

Dockerfile pavyzdys

# Use an official Python runtime as a parent image
FROM python:3.8-slim-buster

# Set the working directory in the container
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . /app

# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# Make port 80 available to the world outside this container
EXPOSE 80

ADD naudojimas Dockerfile

Dockerfile pavyzdys

# Use an official Python runtime as a parent image
FROM python:3.8-slim-buster

# Set the working directory in the container
WORKDIR /app

# Add files from a remote URL
ADD https://example.com/data/archive.tar.gz /app/

# Extract the archive file
RUN tar -xzf /app/archive.tar.gz -C /app

# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# Make port 80 available to the world outside this container
EXPOSE 80

Išsami COPY ir ADD analizė Dockerfile

Nors abu ir komandos yra skirtos kopijuoti failus iš pagrindinės sistemos į konteinerio failų sistemą, jos turi skirtingas funkcijas ir naudojimo atvejus, dėl kurių kiekviena tinka įvairiems scenarijams. The komanda yra paprastesnė ir labiau nuspėjama. Jį geriausia naudoti pagrindiniam failų kopijavimui, kai nereikia papildomo apdorojimo, pvz., archyvų išskleidimo ar nuotolinių failų gavimo. Ši komanda užtikrina, kad į konteinerį būtų nukopijuoti tik vietiniai failai ir katalogai, taip išlaikoma švari ir saugi kūrimo aplinka.

Kita vertus, komanda suteikia daugiau funkcijų, tačiau yra sudėtingesnė ir galimos saugumo rizikos. The komanda gali tvarkyti URL atsisiuntimus ir automatiškai išgauti suglaudintus failus, pvz , .gzip, ir . Tai gali būti naudinga tais atvejais, kai kūrimo procesui reikalingi nuotoliniai ištekliai arba archyvai, kuriuos reikia išgauti kuriant vaizdą. Tačiau šios papildomos funkcijos yra susijusios su rizika, pvz., netyčiniu failų perrašymu ir saugos pažeidžiamumu atsisiunčiant iš atokių vietų. Todėl, sprendžiant tarp jų, labai svarbu atidžiai apsvarstyti šiuos veiksnius ir .

Dažni klausimai ir atsakymai apie COPY ir ADD programoje Dockerfile

  1. Koks yra pagrindinis naudojimas komanda Dockerfile?
  2. The komanda pirmiausia naudojama vietiniams failams ir katalogams kopijuoti iš pagrindinės sistemos į Docker konteinerį.
  3. Kada turėtumėte naudoti komandą vietoj ?
  4. Turėtumėte naudoti komanda, kai reikia nukopijuoti failus iš URL arba kai reikia išgauti suglaudintus failus kūrimo proceso metu.
  5. Kokie yra saugumo padariniai naudojant komandą?
  6. The komanda gali sukelti saugumo pavojų, ypač atsisiunčiant failus iš nuotolinių URL, nes gali perrašyti esamus failus arba atsirasti pažeidžiamumų.
  7. Ar gali komanda ištraukti suspaustus failus?
  8. Ne, komanda negali išgauti suglaudintų failų; tiesiog nukopijuoja juos tokius, kokie jie yra.
  9. Kaip tvarkyti suglaudintus failus kitaip nei ?
  10. The komanda automatiškai ištraukia suglaudintus failus, pvz , , ir .bzip2 kai jie dedami į talpyklą.
  11. Ar galima naudoti pakaitos simbolius su komandą?
  12. Taip, galite naudoti pakaitos simbolius su komanda, norėdami nukopijuoti kelis failus ar katalogus, atitinkančius šabloną.
  13. Kas atsitiks, jei URL pateikiamas į komanda nepasiekiama?
  14. Jei URL pateiktas į komanda nepasiekiama, „Docker“ kūrimo procesas nepavyks.
  15. Kurią komandą turėtumėte naudoti atliekant paprastą vietinio failo kopijavimo operaciją?
  16. Norėdami atlikti paprastas vietinių failų kopijavimo operacijas, turėtumėte naudoti komandą, nes ji yra paprastesnė ir saugesnė.
  17. Ar gali komanda gali būti naudojama failams pridėti iš vietinių ir nuotolinių šaltinių?
  18. Taip, komanda gali pridėti failus tiek iš vietinių šaltinių, tiek iš nuotolinių URL, todėl tam tikrais atvejais ji tampa universalesnė.

Supratimas, kada naudoti ir „Dockerfile“ yra būtinas norint optimizuoti sudėtinio rodinio kūrimą. Nors yra paprasta ir saugi vietiniams failams, ADD suteikia papildomų galimybių dėl papildomo sudėtingumo ir galimų saugumo problemų. Pasirinkę tinkamą komandą pagal konkrečius poreikius, galite padidinti „Docker“ vaizdų efektyvumą ir saugumą.