Heim > Artikel > Betrieb und Instandhaltung > Was ist der Unterschied zwischen Anweisungen zum Kopieren und Hinzufügen in Docker?
Unterschied: Die COPY-Anweisung unterstützt nicht das Abrufen von Ressourcen von Remote-URLs. Sie kann nur Ressourcen von dem Host lesen, auf dem Docker Build ausgeführt wird, und sie in das Image kopieren, während die ADD-Anweisung das Abrufen von Ressourcen von Remote-URLs unterstützt Remote-Server über URLs abrufen und in das Bild kopieren.
Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, Docker-1.13.1-Version, Dell G3-Computer.
Sowohl die COPY-Anweisung als auch die ADD-Anweisung in der Docker-Datei können Ressourcen auf dem Host zum Container-Image kopieren oder hinzufügen und werden alle während des Erstellungsprozesses des Images abgeschlossen.
Der Unterschied zwischen ADD und COPY von DockerFile
Der einzige Unterschied zwischen der COPY-Anweisung und der ADD-Anweisung besteht darin, ob sie das Abrufen von Ressourcen von einer Remote-URL unterstützt.
Die COPY-Anweisung kann nur Ressourcen vom Host lesen, auf dem Docker Build ausgeführt wird, und sie in das Image kopieren. Die ADD-Anweisung unterstützt auch das Lesen von Ressourcen vom Remote-Server über die URL und deren Kopieren in das Bild.
Für die gleichen Anforderungen wird empfohlen, den COPY-Befehl zu verwenden. Mit der ADD-Anweisung können lokale TAR-Dateien besser gelesen und dekomprimiert werden.
ADD- und COPY-Anweisungen
COPY hat die gleiche Syntax wie ADD, das Kopieren von Dateien.
ADD
Kopieren Sie neue Dateien, Verzeichnisse oder Remote-Datei-URLs cbce1a3cf2f839037583dce8e845670b und fügen Sie sie zu 6be58d1426a577c69ada50a4bc87dd69 hinzu.
cbce1a3cf2f839037583dce8e845670b Es können mehrere Ressourcen angegeben werden, aber wenn es sich um Dateien oder Verzeichnisse handelt, werden ihre Pfade relativ zur Quelle des Build-Kontexts interpretiert, also _WORKDIR_.
Jedes cbce1a3cf2f839037583dce8e845670b kann Platzhalter enthalten und für den Abgleich werden die filepath.Match-Regeln von Go verwendet. Zum Beispiel:
Fügen Sie alle Dateien hinzu, die mit „hom“ beginnen:
ADD hom* /mydir/
Im folgenden Beispiel wird ? durch ein beliebiges einzelnes Zeichen ersetzt, z. B. „home.txt“.
ADD hom?.txt /mydir/
6be58d1426a577c69ada50a4bc87dd69 ist ein absoluter Pfad oder ein relativer Pfad relativ zu WORKDIR.
ADD-Anweisung hat die folgenden Vorteile:
1 Wenn der Quellpfad eine Datei ist und der Zielpfad mit / endet, behandelt Docker den Zielpfad als Verzeichnis und kopiert die Quelldatei in dieses Verzeichnis.
Wenn der Zielpfad nicht existiert, wird der Zielpfad automatisch erstellt.
2. Wenn der Quellpfad eine Datei ist und der Zielpfad nicht mit / endet, behandelt Docker den Zielpfad als Datei.
Wenn der Zielpfad nicht vorhanden ist, wird eine Datei mit dem Namen des Zielpfads erstellt und der Inhalt stammt aus derselben Quelle wie die Datei.
Wenn es sich bei der Zieldatei um eine vorhandene Datei handelt, wird sie mit überschrieben Dabei wird natürlich nur der Inhalt überschrieben und der Dateiname bleibt weiterhin der Zieldateiname.
Wenn die Zieldatei tatsächlich in einem vorhandenen Verzeichnis vorhanden ist, wird die Quelldatei in dieses Verzeichnis kopiert. Beachten Sie, dass es in diesem Fall am besten ist, die Anzeige mit / zu beenden, um Verwirrung zu vermeiden.
3. Wenn der Quellpfad ein Verzeichnis ist und der Zielpfad nicht existiert, erstellt Docker automatisch ein Verzeichnis mit dem Zielpfad und kopiert die Dateien in das Quellpfadverzeichnis.
Wenn der Zielpfad ein vorhandenes Verzeichnis ist, kopiert Docker die Dateien im Quellpfadverzeichnis in das Verzeichnis.
4. Wenn es sich bei der Quelldatei um eine Archivdatei (komprimierte Datei) handelt, dekomprimiert Docker sie automatisch.
Die oben genannten Vorteile sind auch die Nachteile von ADD
Empfohlenes Lernen: „Docker-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Anweisungen zum Kopieren und Hinzufügen in Docker?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!