'COPY'- ja 'ADD'-komentojen erojen ymmärtäminen Docker-tiedostossa

'COPY'- ja 'ADD'-komentojen erojen ymmärtäminen Docker-tiedostossa
'COPY'- ja 'ADD'-komentojen erojen ymmärtäminen Docker-tiedostossa

Dockerfile-komennot selitetty

Dockerfile-tiedoston COPY- ja ADD-komennot tuovat tiedostot säilösi tiedostojärjestelmään, mutta niissä on erilliset toiminnot ja parhaat käyttömahdollisuudet. Näiden erojen ymmärtäminen on välttämätöntä tehokkaan Dockerfile-hallinnan ja konttisovellustesi toimivuuden varmistamiseksi.

Vaikka "COPY"-komentoa käytetään ensisijaisesti yksinkertaiseen tiedostojen kopioimiseen, "ADD" tarjoaa lisäominaisuuksia, kuten etä-URL-osoitteiden käsittelyn ja pakattujen tiedostojen purkamisen. Tämä artikkeli tutkii kunkin komennon vivahteita ja opastaa sinua käyttämään toista toiseen Docker-koontiversioiden optimoimiseksi.

Komento Kuvaus
FROM Määrittää rakennettavan Docker-kuvan peruskuvan.
WORKDIR Asettaa työhakemiston säilön sisällä.
COPY Kopioi tiedostot tai hakemistot isännästä säilön tiedostojärjestelmään.
ADD Lisää tiedostoja, hakemistoja tai etä-URL-osoitteita säilön tiedostojärjestelmään ja pystyy käsittelemään tiedostojen purkamista.
RUN Suorittaa komennon säilön ympäristössä.
EXPOSE Ilmoittaa Dockerille, että säilö kuuntelee määritettyjä verkkoportteja suorituksen aikana.

Yksityiskohtainen selitys Dockerfile-komennoista

Ensimmäinen skripti osoittaa COPY komento Docker-tiedostossa. The COPY ohje on yksinkertainen, ja sitä käytetään tiedostojen tai hakemistojen kopioimiseen isäntäjärjestelmästä Docker-säilön tiedostojärjestelmään. Tässä esimerkissä skripti alkaa FROM komento, joka määrittää peruskuvan muodossa python:3.8-slim-buster . The WORKDIR -komento määrittää säilön sisällä olevaksi työhakemistoksi /app . Tätä seuraa COPY komento, joka kopioi isäntäkoneen nykyisen hakemiston sisällön palvelimeen /app hakemistosta säilössä. Kun tiedostot on kopioitu, RUN -komentoa käytetään tarvittavien Python-pakettien asentamiseen, jotka on määritetty kohdassa requirements.txt tiedosto. Lopuksi, EXPOSE komento antaa portin 80 ulkomaailman saataville.

Sitä vastoin toinen kirjoitus korostaa ADD komento Docker-tiedostossa. Kuten ensimmäinen kirjoitus, se alkaa FROM -komento asettaaksesi peruskuvan ja WORKDIR komento määrittääksesi työhakemiston. Tärkein ero tässä on ADD -komento, jota käytetään tiedostojen lisäämiseen etä-URL-osoitteesta, tässä tapauksessa https://example.com/data/archive.tar.gz . The ADD komento ei vain kopioi tiedostoja, vaan sillä on myös kyky purkaa automaattisesti pakattuja tiedostoja, kuten seuraava osoittaa RUN komento, joka purkaa archive.tar.gz tiedosto tiedostoon /app hakemistosta. Tämän jälkeen, RUN komento asentaa tarvittavat Python-paketit ja EXPOSE komento tekee portin 80 käytettävissä.

COPY:n käyttäminen Docker-tiedostossa

Esimerkki Docker-tiedostosta

# 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:n käyttö Docker-tiedostossa

Esimerkki Docker-tiedostosta

# 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:n ja ADD:n perusteellinen analyysi Dockerfilessa

Vaikka molemmat COPY ja ADD komennot palvelevat tiedostojen kopioimista isäntäjärjestelmästä säilön tiedostojärjestelmään, niillä on erilliset ominaisuudet ja käyttötapaukset, jotka tekevät niistä sopivia eri skenaarioissa. The COPY komento on yksinkertaisempi ja ennakoitavampi. Sitä käytetään parhaiten tiedostojen peruskopiointiin, jossa ei tarvita lisäkäsittelyä, kuten arkistojen purkamista tai etätiedostojen hakemista. Tämä komento varmistaa, että vain paikalliset tiedostot ja hakemistot kopioidaan säilöön, mikä ylläpitää puhdasta ja suojattua rakennusympäristöä.

Toisaalta, ADD komento tarjoaa enemmän toimintoja, mutta lisää monimutkaisuutta ja mahdollisia tietoturvariskejä. The ADD komento voi käsitellä URL-latauksia ja purkaa automaattisesti pakattuja tiedostoja, kuten .tar, .gzip, ja .bzip2. Tästä voi olla hyötyä tapauksissa, joissa rakennusprosessi vaatii etäresursseja tai arkistoja, jotka on purettava kuvan luomisen aikana. Näihin lisäominaisuuksiin liittyy kuitenkin riskejä, kuten tiedostojen tahaton päällekirjoittaminen ja tietoturva-aukkoja, kun ne ladataan etäsijainneista. Siksi on erittäin tärkeää ottaa nämä tekijät huolellisesti huomioon, kun päätetään niiden välillä COPY ja ADD.

Yleisiä kysymyksiä ja vastauksia KOPIOISTA ja ADD:sta Dockerfilessa

  1. Mikä on ensisijainen käyttötarkoitus COPY komento Docker-tiedostossa?
  2. The COPY komentoa käytetään ensisijaisesti paikallisten tiedostojen ja hakemistojen kopioimiseen isäntäjärjestelmästä Docker-säilöön.
  3. Milloin kannattaa käyttää ADD komento sen sijaan COPY?
  4. Sinun tulisi käyttää ADD -komentoa, kun sinun on kopioitava tiedostoja URL-osoitteesta tai kun sinun on purettava pakattuja tiedostoja rakennusprosessin aikana.
  5. Mitä turvallisuusvaikutuksia käyttämällä ADD komento?
  6. The ADD komento voi aiheuttaa tietoturvariskejä, erityisesti ladattaessa tiedostoja etä-URL-osoitteista, koska se voi mahdollisesti korvata olemassa olevat tiedostot tai tuoda haavoittuvuuksia.
  7. Voiko COPY komento purkaa pakatut tiedostot?
  8. Ei, COPY komento ei pysty purkamaan pakattuja tiedostoja; se yksinkertaisesti kopioi ne sellaisina kuin ne ovat.
  9. Kuinka ADD käsitellä pakattuja tiedostoja eri tavalla kuin COPY?
  10. The ADD komento purkaa automaattisesti pakatut tiedostot, kuten .tar, .gzip, ja .bzip2 kun ne lisätään säiliöön.
  11. Onko mahdollista käyttää yleismerkkejä kanssa COPY komento?
  12. Kyllä, voit käyttää yleismerkkejä kanssa COPY -komento kopioidaksesi useita tiedostoja tai hakemistoja, jotka vastaavat kuviota.
  13. Mitä tapahtuu, jos URL-osoite annetaan osoitteelle ADD komento ei ole tavoitettavissa?
  14. Jos URL-osoite on annettu ADD komento ei ole tavoitettavissa, Dockerin koontiprosessi epäonnistuu.
  15. Mitä komentoa tulisi käyttää yksinkertaiseen paikalliseen tiedostokopiointiin?
  16. Yksinkertaisiin paikallisiin tiedostojen kopiointitoimintoihin kannattaa käyttää COPY komento, koska se on yksinkertaisempi ja turvallisempi.
  17. Voiko ADD komentoa käytetään tiedostojen lisäämiseen sekä paikallisista että etälähteistä?
  18. Kyllä ADD komento voi lisätä tiedostoja sekä paikallisista lähteistä että etä-URL-osoitteista, mikä tekee siitä monipuolisemman tietyissä skenaarioissa.

Docker COPY- ja ADD-komennon päättäminen

Ymmärtää, milloin käyttää COPY ja ADD Dockerfile-tiedostossa on välttämätön konttikoonnosten optimoimiseksi. Sillä aikaa COPY on suoraviivainen ja turvallinen paikallisille tiedostoille, ADD tarjoaa lisäominaisuuksia lisän monimutkaisuuden ja mahdollisten turvallisuusongelmien kustannuksella. Oikean komennon valitseminen erityistarpeidesi perusteella voi parantaa Docker-kuviesi tehokkuutta ja turvallisuutta.