Dockeri failis käskude „COPY” ja „ADD” vaheliste erinevuste mõistmine

Dockerfile

Dockerfile'i käsud on selgitatud

Dockerfile'i käsud "COPY" ja "ADD" aitavad faile teie konteineri failisüsteemi sisestada, kuid neil on erinevad funktsioonid ja parima kasutuse stsenaariumid. Nende erinevuste mõistmine on oluline Dockerfile'i tõhusaks haldamiseks ja teie konteinerrakenduste ootuspäraseks toimimiseks.

Kui funktsiooni „COPY” kasutatakse peamiselt failide lihtsaks kopeerimiseks, siis „ADD” pakub lisavõimalusi, näiteks kaug-URL-ide käsitlemist ja tihendatud failide ekstraktimist. See artikkel uurib iga käsu nüansse, juhendades teid, millal kasutada Dockeri järge optimeerimiseks üht teist.

Käsk Kirjeldus
FROM Määrab ehitatava Dockeri kujutise jaoks kasutatava baaspildi.
WORKDIR Määrab konteineris oleva töökataloogi.
COPY Kopeerib failid või kataloogid hostist konteineri failisüsteemi.
ADD Lisab failid, kataloogid või kaug-URL-id konteineri failisüsteemi ja saab hakkama failide ekstraktimisega.
RUN Täidab konteineri keskkonnas käsu.
EXPOSE Teatab Dockerile, et konteiner kuulab käitusajal määratud võrguporte.

Dockerfile'i käskude üksikasjalik seletus

Esimene skript demonstreerib käsk Dockerfailis. The juhised on lihtsad ja seda kasutatakse failide või kataloogide kopeerimiseks hostsüsteemist Dockeri konteineri failisüsteemi. Selles näites algab skript tähega käsk, mis määrab põhipildi kui python:3.8-slim-buster . The käsk määrab konteineris oleva töökataloogi väärtuseks . Sellele järgneb käsk, mis kopeerib hosti praeguse kataloogi sisu serverisse /app kataloog konteineris. Pärast failide kopeerimist avatakse käsku kasutatakse punktis määratletud vajalike Pythoni pakettide installimiseks faili. Lõpuks, käsk teeb pordi 80 välismaailmale kättesaadavaks.

Seevastu teine ​​skript tõstab esile käsk Dockerfailis. Sarnaselt esimese skriptiga algab see tähega käsk põhipildi ja käsk töökataloogi määratlemiseks. Peamine erinevus on siin ADD käsk, mida kasutatakse failide lisamiseks kaug-URL-ist, antud juhul . The käsk mitte ainult ei kopeeri faile, vaid suudab ka tihendatud faile automaatselt ekstraktida, nagu näitab järgmine käsk, mis ekstraktib archive.tar.gz faili sisse kataloog. Pärast seda, käsk installib vajalikud Pythoni paketid ja käsk teeb pordi 80 kättesaadavaks.

COPY kasutamine Dockeri failis

Dockerfile'i näide

# 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 kasutamine Dockeri failis

Dockerfile'i näide

# 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

COPY ja ADD põhjalik analüüs Dockerfile'is

Kuigi mõlemad ja käskude eesmärk on failide kopeerimine hostsüsteemist konteineri failisüsteemi, neil on erinevad funktsioonid ja kasutusjuhud, mis muudavad iga erineva stsenaariumi jaoks sobivaks. The käsk on lihtsam ja etteaimatavam. Seda on kõige parem kasutada failide põhikopeerimiseks, kui pole vaja täiendavat töötlemist, näiteks arhiivide ekstraktimist või kaugfailide toomist. See käsk tagab, et konteinerisse kopeeritakse ainult kohalikud failid ja kataloogid, säilitades nii puhta ja turvalise ehituskeskkonna.

Teisest küljest, käsk pakub rohkem funktsioone, kuid lisab keerukust ja võimalikke turvariske. The käsk saab käsitleda URL-i allalaadimisi ja automaatselt ekstraktida tihendatud faile, näiteks , .gzipja . See võib olla kasulik juhtudel, kui teie ehitusprotsess nõuab kaugvarasid või arhiive, mis tuleb pildi loomise ajal välja võtta. Nende lisafunktsioonidega kaasnevad aga riskid, nagu failide tahtmatu ülekirjutamine ja turvaaugud kaugematest asukohtadest allalaadimisel. Seetõttu on nende vahel otsustamisel ülioluline neid tegureid hoolikalt kaaluda ja .

Levinud küsimused ja vastused COPY ja ADD kohta Dockerfile'is

  1. Mis on peamine kasutusala käsk Dockerfile'is?
  2. The käsku kasutatakse peamiselt kohalike failide ja kataloogide kopeerimiseks hostsüsteemist Dockeri konteinerisse.
  3. Millal peaksite kasutama käsu asemel ?
  4. Sa peaksid kasutama käsk, kui teil on vaja faile URL-ist kopeerida või kui teil on vaja koostamisprotsessi ajal tihendatud faile ekstraktida.
  5. Millised on rakenduse kasutamise tagajärjed turvalisusele käsk?
  6. The käsk võib tuua kaasa turvariske, eriti failide allalaadimisel kaug-URL-idelt, kuna see võib olemasolevad failid üle kirjutada või tekitada turvaauke.
  7. Kas saab käsk ekstraktida tihendatud failid?
  8. Ei, käsul ei ole tihendatud failide ekstraktimise võimalust; see lihtsalt kopeerib neid sellisena, nagu nad on.
  9. Kuidas käsitleda tihendatud faile erinevalt ?
  10. The käsk ekstraktib automaatselt tihendatud failid, näiteks , ja .bzip2 kui need konteinerisse lisatakse.
  11. Kas koos on võimalik kasutada metamärke käsk?
  12. Jah, saate kasutada metamärke käsk mitme mustrile vastava faili või kataloogi kopeerimiseks.
  13. Mis juhtub, kui URL esitatakse aadressile käsk pole kättesaadav?
  14. Kui URL on antud aadressile käsk ei ole kättesaadav, Dockeri ehitusprotsess ebaõnnestub.
  15. Millist käsku peaksite kasutama lihtsa kohaliku failikopeerimise jaoks?
  16. Lihtsate kohalike failide kopeerimistoimingute jaoks peaksite kasutama käsk, kuna see on lihtsam ja turvalisem.
  17. Kas saab käsku kasutatakse failide lisamiseks nii kohalikest kui ka kaugallikatest?
  18. Jah, käsk saab lisada faile nii kohalikest allikatest kui ka kaug-URL-idest, muutes selle teatud stsenaariumide korral mitmekülgsemaks.

Mõistmine, millal kasutada ja Dockerfile'is on konteineri ehituse optimeerimiseks hädavajalik. Kuigi on kohalike failide jaoks lihtne ja turvaline, ADD pakub lisavõimalusi täiendava keerukuse ja võimalike turvaprobleemide hinnaga. Õige käsu valimine teie konkreetsete vajaduste põhjal võib suurendada teie Dockeri piltide tõhusust ja turvalisust.