A „COPY” és „ADD” parancsok közötti különbségek megértése egy Docker-fájlban

A „COPY” és „ADD” parancsok közötti különbségek megértése egy Docker-fájlban
A „COPY” és „ADD” parancsok közötti különbségek megértése egy Docker-fájlban

A Dockerfile parancsok magyarázata

A Dockerfile-ban található „MÁSOLÁS” és „ADD” parancsok arra szolgálnak, hogy fájlokat vigyenek be a tároló fájlrendszerébe, de külön funkciókkal és a legjobban használható forgatókönyvekkel rendelkeznek. Ezeknek a különbségeknek a megértése elengedhetetlen a hatékony Dockerfile-kezeléshez és annak biztosításához, hogy a konténeres alkalmazások a várt módon működjenek.

Míg a „COPY”-t elsősorban egyszerű fájlmásolásra használják, az „ADD” további lehetőségeket kínál, mint például a távoli URL-ek kezelése és a tömörített fájlok kibontása. Ez a cikk az egyes parancsok árnyalatait fogja feltárni, és végigvezeti Önt, hogy mikor használja az egyiket a másikkal szemben a Docker-építések optimalizálásához.

Parancs Leírás
FROM Megadja az épülő Docker-képfájlhoz használandó alapképet.
WORKDIR Beállítja a tárolón belüli munkakönyvtárat.
COPY Fájlokat vagy könyvtárakat másol a gazdagépről a tároló fájlrendszerébe.
ADD Fájlokat, könyvtárakat vagy távoli URL-címeket ad hozzá a tároló fájlrendszeréhez, és képes kezelni a fájlok kibontását.
RUN Parancsot hajt végre a tároló környezetében.
EXPOSE Tájékoztatja a Dockert, hogy a tároló a megadott hálózati portokon figyel futás közben.

A Dockerfile parancsok részletes magyarázata

Az első szkript bemutatja a használatát COPY parancsot egy Dockerfile-ban. A COPY Az utasítás egyszerű, és arra szolgál, hogy fájlokat vagy könyvtárakat másoljon a gazdagépről a Docker-tároló fájlrendszerébe. Ebben a példában a szkript a következővel kezdődik FROM parancs, amely az alapképet a következőképpen adja meg python:3.8-slim-buster . A WORKDIR parancs a tárolón belüli munkakönyvtárat a következőre állítja: /app . Ezt követi a COPY parancsot, amely a gazdagépen található aktuális könyvtár tartalmát a /app könyvtárat a tárolóban. A fájlok másolása után a RUN A parancs a szükséges Python-csomagok telepítésére szolgál, amelyeket a requirements.txt fájlt. Végül a EXPOSE parancs elérhetővé teszi a 80-as portot a külvilág számára.

Ezzel szemben a második szkript kiemeli a használatát ADD parancsot egy Dockerfile-ban. Az első szkripthez hasonlóan a FROM paranccsal beállíthatja az alapképet és a WORKDIR parancsot a munkakönyvtár meghatározásához. A legfontosabb különbség itt az ADD parancs, amely távoli URL-ről fájlok hozzáadására szolgál, ebben az esetben https://example.com/data/archive.tar.gz . A ADD A parancs nem csak a fájlokat másolja, hanem képes a tömörített fájlok automatikus kicsomagolására is, amint azt a következő bemutatja RUN parancs, amely kivonja a archive.tar.gz fájlba a /app Könyvtár. Ezt követően a RUN parancs telepíti a szükséges Python-csomagokat, és a EXPOSE parancs elérhetővé teszi a 80-as portot.

A COPY használata Docker-fájlban

Dockerfile példa

# 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 használata Docker-fájlban

Dockerfile példa

# 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

A COPY és az ADD mélyreható elemzése a Dockerfile-ban

Miközben mindkettő COPY és ADD A parancsok azt a célt szolgálják, hogy fájlokat másoljanak át a gazdagépről a tároló fájlrendszerébe, különálló jellemzőkkel és használati esetekkel rendelkeznek, amelyek mindegyike különböző forgatókönyvek esetén megfelelő. A COPY parancs egyszerűbb és kiszámíthatóbb. Legjobb az alapvető fájlmásoláshoz, ahol nincs szükség további feldolgozásra, például archívumok kibontására vagy távoli fájlok letöltésére. Ez a parancs biztosítja, hogy csak a helyi fájlokat és könyvtárakat másolja a tárolóba, így tiszta és biztonságos összeállítási környezetet tart fenn.

Másrészt a ADD parancs több funkcionalitást biztosít, de megnövelt összetettséggel és potenciális biztonsági kockázatokkal. A ADD parancs képes kezelni az URL-letöltéseket, és automatikusan kibontja a tömörített fájlokat, mint pl .tar, .gzip, és .bzip2. Ez előnyös lehet olyan esetekben, amikor az építési folyamat távoli eszközöket vagy archívumokat igényel, amelyeket ki kell bontani a képfájl létrehozása során. Ezek az extra szolgáltatások azonban kockázatokkal járnak, például a fájlok nem szándékos felülírásával és biztonsági résekkel a távoli helyekről történő letöltéskor. Ezért kulcsfontosságú, hogy alaposan mérlegelje ezeket a tényezőket, amikor dönt a kettő között COPY és ADD.

Gyakori kérdések és válaszok a Dockerfile-ban található MÁSOLÁS és HOZZÁADÁS kapcsán

  1. Mi az elsődleges felhasználása a COPY parancsot egy Dockerfile-ban?
  2. A COPY parancs elsősorban a helyi fájlok és könyvtárak másolására szolgál a gazdagép rendszerről a Docker-tárolóba.
  3. Mikor érdemes használni a ADD parancs helyett COPY?
  4. Használnia kell a ADD parancsot, ha fájlokat kell másolnia egy URL-ről, vagy ha tömörített fájlokat kell kibontania az építési folyamat során.
  5. Milyen biztonsági vonatkozásai vannak a ADD parancs?
  6. A ADD parancs biztonsági kockázatokat jelenthet, különösen akkor, ha fájlokat tölt le távoli URL-ekről, mivel potenciálisan felülírhatja a meglévő fájlokat, vagy sebezhetőséget okozhat.
  7. Vajon a COPY parancs kicsomagolja a tömörített fájlokat?
  8. Nem, a COPY parancs nem képes tömörített fájlok kibontására; egyszerűen lemásolja őket úgy, ahogy vannak.
  9. Hogyan működik ADD másként kezelje a tömörített fájlokat COPY?
  10. A ADD parancs automatikusan kicsomagolja a tömörített fájlokat, mint pl .tar, .gzip, és .bzip2 amikor hozzáadják a tartályhoz.
  11. Lehetséges-e helyettesítő karakterek használata a COPY parancs?
  12. Igen, használhat helyettesítő karaktereket a COPY parancs több, egy mintának megfelelő fájl vagy könyvtár másolásához.
  13. Mi történik, ha a ADD a parancs nem elérhető?
  14. Ha a ADD parancs nem érhető el, a Docker összeállítási folyamat meghiúsul.
  15. Melyik parancsot használja egy egyszerű, helyi fájlmásolási művelethez?
  16. Az egyszerű, helyi fájlmásolási műveletekhez használja a COPY parancsot, mivel az egyszerűbb és biztonságosabb.
  17. Vajon a ADD parancsot kell használni a helyi és távoli forrásokból származó fájlok hozzáadásához?
  18. Igen, a ADD parancs helyi forrásokból és távoli URL-címekről is hozzáadhat fájlokat, így bizonyos esetekben sokoldalúbbá válik.

A Docker COPY és ADD parancsainak lezárása

Annak megértése, hogy mikor kell használni COPY és ADD a Dockerfile-ban elengedhetetlen a konténerépítések optimalizálásához. Míg COPY egyszerű és biztonságos a helyi fájlokhoz, ADD extra képességeket biztosít a bonyolultság és a potenciális biztonsági problémák árán. A megfelelő parancs kiválasztásával az Ön egyedi igényei alapján fokozhatja Docker-képeinek hatékonyságát és biztonságát.