Heim >Betrieb und Instandhaltung >Docker >So kopieren Sie Dateien in den Docker-Container

So kopieren Sie Dateien in den Docker-Container

PHPz
PHPzOriginal
2023-04-10 14:14:156874Durchsuche

Mit der rasanten Entwicklung des Cloud Computing ist Docker für viele Unternehmen und Cloud-Dienstleister zu einer Standard-Bereitstellungsplattform geworden. Bei der Verwendung von Docker-Containern ist es häufig erforderlich, Dateien zwischen dem Host und dem Container zu übertragen, und diese Anforderung macht das Kopieren von Dateien zu einer notwendigen Fähigkeit. In diesem Artikel erfahren Sie, wie Sie Dateien in einen Docker-Container kopieren.

1. Verwenden Sie den Befehl docker cp

Docker bietet einen speziellen Befehl docker cp, der Dateien zwischen dem Host und dem Container kopieren kann. Die spezifische Verwendung ist wie folgt:

docker cp <src_path> <container_id>:<dest_path>
docker cp <container_id>:<src_path> <dest_path>

Unter diesen stellen <src_path> und <dest_path> den Quell- bzw. Zielpfad dar, <container_id&gt ; stellt die Container-ID dar. <src_path><dest_path>分别表示源和目标路径,<container_id>表示容器ID。

例如,要将宿主机中的文件/home/user/file.txt复制到容器中的/var/www/目录下,可以执行以下命令:

docker cp /home/user/file.txt <container_id>:/var/www/

同样的,如果想要将容器中的文件/var/log/nginx/access.log复制到宿主机的/home/user/目录下,可以执行以下命令:

docker cp <container_id>:/var/log/nginx/access.log /home/user/

需要注意的是,如果<dest_path>/结尾,表示目标路径是一个目录,此时需要保证目标路径存在。如果<dest_path>不以/结尾,表示目标路径是一个文件,此时需要保证目标路径的上层目录存在。

2. 使用共享文件夹

另一个向Docker容器下拷贝文件的方法是使用共享文件夹。这个方法的前提条件是在创建容器时需要把宿主机的目录映射到容器内部,这个映射可以通过-v--mount选项来完成:

docker run -v <host_dir>:<container_dir> <image_name>

或者

docker run --mount type=bind,source=<host_dir>,target=<container_dir> <image_name>

其中,<host_dir>表示宿主机中的目录,<container_dir>表示容器中的目录。 接下来,容器内部就可以像使用本地目录一样使用映射目录。

在这种情况下,对于需要传输的文件,只需要将它们放在映射目录下,就可以在容器中访问它们。同样地,容器中生成的文件也可以放在映射目录下,然后在宿主机上访问和处理。

3. 使用Docker Volume

使用Docker Volume也是向Docker容器下拷贝文件的另一种方法。与共享文件夹相似,使用Docker Volume时创建容器时需要把一个宿主机的目录挂载到容器内部。不同的是,这个挂载动作会在Docker守护进程中创建一个标准卷,并将这个卷与容器内的目录关联起来。这使得宿主机和容器之间可以高效地共享文件,而不依赖本地文件系统。

具体使用方法如下:

docker run -v <volume_name>:<container_dir> <image_name>

或者

docker run --mount type=volume,source=<volume_name>,target=<container_dir> <image_name>

其中,<volume_name>表示Docker守护进程中标准卷的名称,<container_dir>表示容器中的路径。与共享文件夹不同的是,Docker Volume需要显式地创建和删除。它可以通过以下命令来完成:

docker volume create <volume_name>
docker volume rm <volume_name>

最后,可以通过以下命令来在宿主机和容器之间复制文件:

docker cp <file_path> <container_id>:<container_dir>
docker cp <container_id>:<container_dir> <file_path>

在这里,<file_path>表示本地路径,<container_id>表示容器ID,<container_dir>

Um beispielsweise die Datei /home/user/file.txt im Host in das Verzeichnis /var/www/ im Container zu kopieren, können Sie Folgendes ausführen Folgender Befehl:

rrreee

Ähnlich, wenn Sie die Datei /var/log/nginx/access.log im Container in das Verzeichnis /home/user/ kopieren möchten des Hosts können Sie den folgenden Befehl ausführen:

rrreee

Es ist zu beachten, dass wenn <dest_path> mit / endet, dies bedeutet, dass der Zielpfad a ist Verzeichnis, und Sie müssen sicherstellen, dass der Zielpfad vorhanden ist. Wenn <dest_path> nicht mit / endet, bedeutet dies, dass der Zielpfad eine Datei ist. In diesem Fall müssen Sie sicherstellen, dass es sich um das obere Verzeichnis des Ziels handelt Pfad existiert. 🎜🎜2. Verwenden Sie einen freigegebenen Ordner🎜🎜Eine andere Möglichkeit, Dateien in einen Docker-Container zu kopieren, ist die Verwendung eines freigegebenen Ordners. Voraussetzung für diese Methode ist, dass das Hostverzeichnis beim Erstellen des Containers dem Inneren des Containers zugeordnet werden muss. Diese Zuordnung kann über -v oder --mount abgeschlossen werden. code>-Option: 🎜 rrreee🎜oder🎜rrreee🎜wobei <host_dir> das Verzeichnis im Host und <container_dir> das Verzeichnis im Container darstellt. Als nächstes kann das zugeordnete Verzeichnis innerhalb des Containers wie ein lokales Verzeichnis verwendet werden. 🎜🎜In diesem Fall müssen Sie die zu übertragenden Dateien nur im zugeordneten Verzeichnis ablegen, um im Container darauf zugreifen zu können. Ebenso können im Container generierte Dateien im zugeordneten Verzeichnis abgelegt und dann auf dem Host abgerufen und verarbeitet werden. 🎜🎜3. Docker Volume verwenden🎜🎜Die Verwendung von Docker Volume ist eine weitere Möglichkeit, Dateien in Docker-Container zu kopieren. Ähnlich wie bei freigegebenen Ordnern müssen Sie beim Erstellen eines Containers mit Docker Volume ein Hostverzeichnis in den Container einbinden. Der Unterschied besteht darin, dass diese Mount-Aktion ein Standard-Volume im Docker-Daemon erstellt und dieses Volume dem Verzeichnis im Container zuordnet. Dies ermöglicht eine effiziente Dateifreigabe zwischen Host und Container, ohne auf das lokale Dateisystem angewiesen zu sein. 🎜🎜Die spezifische Verwendung ist wie folgt: 🎜rrreee🎜 oder 🎜rrreee🎜wobei <volume_name> den Namen des Standard-Volumes im Docker-Daemon-Prozess darstellt und <container_dir> stellt den Containerpfad in dar. Im Gegensatz zu freigegebenen Ordnern müssen Docker-Volumes explizit erstellt und gelöscht werden. Dies kann mit dem folgenden Befehl erfolgen: 🎜rrreee🎜Abschließend können Dateien mit dem folgenden Befehl zwischen dem Host und dem Container kopiert werden: 🎜rrreee🎜Hier stellt <file_path> den lokalen Pfad dar, <container_id> stellt die Container-ID dar und <container_dir> stellt das Verzeichnis im Container dar. 🎜🎜Fazit🎜🎜Bei der Verwendung von Docker-Containern müssen wir häufig Dateien kopieren. In diesem Artikel werden drei Methoden zum Kopieren von Dateien in Docker-Container vorgestellt, nämlich die Verwendung des Befehls docker cp, freigegebener Ordner und des Docker-Volumes. Diese Methoden haben ihre eigenen Vor- und Nachteile. In der Praxis müssen Sie basierend auf Ihren spezifischen Anforderungen die Methode auswählen, die am besten zu Ihnen passt. 🎜

Das obige ist der detaillierte Inhalt vonSo kopieren Sie Dateien in den Docker-Container. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn