docker 如何复制文件夹 / 文件到宿主机中
🖥️ 基本命令语法
docker cp 命令用于在 Docker 容器和宿主机之间复制文件或目录。从容器复制到宿主机的基本语法是:
-
CONTAINER:容器的名称或 ID。 -
SRC_PATH:容器内的源文件或目录路径。 -
DEST_PATH:宿主机的目标路径。 -
OPTIONS(可选):常用选项有:-
-a或--archive:复制所有 UID/GID 信息和权限信息。 -
-L或--follow-link:复制符号链接指向的实际文件而非链接本身。
-
📁 复制操作示例
下面是一些常见的复制场景示例,你可以根据需要进行参考:
| 场景 | 命令示例 | 说明 |
|---|---|---|
| 复制单个文件 | docker cp my-container:/app/config.json ./config-backup.json |
将容器 my-container 中的 /app/config.json 文件复制到当前目录下,并重命名为 config-backup.json。 |
| 复制整个目录 | docker cp my-container:/var/log/nginx ./nginx-logs/ |
将容器内的 /var/log/nginx 目录复制到宿主机的 ./nginx-logs/ 目录下。 |
| 使用容器ID复制 | docker cp a1b2c3d4e5f6:/tmp/debug.log ./debug.log |
使用容器 ID 复制文件。 |
| 复制并保留文件属性 | docker cp -a my-container:/app/data ./backup/ |
复制时保留文件权限、时间戳等元数据。 |
| 复制符号链接实际内容 | docker cp -L my-container:/app/linked_file ./ |
复制符号链接指向的实际文件,而不是链接本身。 |
下面是我最近的案例【通过容器的名称进行复制操作】
我的需求:将容器中的项目目录下的文件复制到宿主机的data目录
命令详解
这条命令用于在 Docker 容器和本地文件系统之间复制文件或目录。
我们可以将命令拆解为几个部分来理解:
| 部分 | 说明 |
|---|---|
docker cp |
Docker 命令,用于在容器和主机之间复制文件/目录 |
carver-hyperf: |
指定源容器名为 carver-hyperf |
/home/carver-hyperf/. |
源路径:容器内的目录(末尾的.表示复制该目录下的所有内容) |
./data |
目标路径:主机上的目录(将把容器内的文件复制到此) |
命令执行效果
这条命令会将容器名为 carver-hyperf 的 Docker 容器中 /home/carver-hyperf/ 目录下的所有文件和文件夹,复制到当前命令执行位置下的 data 目录( 已经映射到宿主机的根目录 )中。
执行前目录结构示例:
执行后目录结构示例:
注意事项和常见用法
-
路径末尾的斜杠和点号:
-
/home/carver-hyperf/复制的是整个目录本身(会创建一个carver-hyperf文件夹到./data) -
/home/carver-hyperf/.复制的是该目录下的所有内容(直接放入./data)
-
-
如果
./data目录不存在:
Docker 会自动创建它。 -
如果
./data目录已存在:
容器中的文件会被复制到该目录下,同名文件会被覆盖。 -
反向操作:
如果你想把主机上的文件复制到容器里,可以反转参数顺序: -
容器状态:
docker cp命令可以在容器处于任何状态(运行中、已停止、已退出)时执行。
本文来自博客园,作者:Carvers,转载请注明原文链接:https://www.cnblogs.com/carver/articles/19095526

浙公网安备 33010602011771号