![A „COPY” és „ADD” parancsok közötti különbségek megértése egy Docker-fájlban](https://www.tempmail.us.com/images/04/04169ca3324eaf23caed5fea669d96e1-836px.webp/a-copy-es-add-parancsok-kozotti-kulonbsegek-megertese-egy-docker-fajlban-836px.webp)
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
- Mi az elsődleges felhasználása a COPY parancsot egy Dockerfile-ban?
- 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.
- Mikor érdemes használni a ADD parancs helyett COPY?
- 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.
- Milyen biztonsági vonatkozásai vannak a ADD parancs?
- 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.
- Vajon a COPY parancs kicsomagolja a tömörített fájlokat?
- Nem, a COPY parancs nem képes tömörített fájlok kibontására; egyszerűen lemásolja őket úgy, ahogy vannak.
- Hogyan működik ADD másként kezelje a tömörített fájlokat COPY?
- 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.
- Lehetséges-e helyettesítő karakterek használata a COPY parancs?
- 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.
- Mi történik, ha a ADD a parancs nem elérhető?
- Ha a ADD parancs nem érhető el, a Docker összeállítási folyamat meghiúsul.
- Melyik parancsot használja egy egyszerű, helyi fájlmásolási művelethez?
- Az egyszerű, helyi fájlmásolási műveletekhez használja a COPY parancsot, mivel az egyszerűbb és biztonságosabb.
- Vajon a ADD parancsot kell használni a helyi és távoli forrásokból származó fájlok hozzáadásához?
- 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.