Loading

docker 如何复制文件夹 / 文件到宿主机中

🖥️ 基本命令语法

docker cp 命令用于在 Docker 容器和宿主机之间复制文件或目录。从容器复制到宿主机的基本语法是:

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
  • 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 cp carver-hyperf:/home/carver-hyperf/. ./data

这条命令用于在 Docker 容器和本地文件系统之间复制文件或目录。

我们可以将命令拆解为几个部分来理解:

部分 说明
docker cp Docker 命令,用于在容器和主机之间复制文件/目录
carver-hyperf: 指定源容器名为 carver-hyperf
/home/carver-hyperf/. 源路径:容器内的目录(末尾的.表示复制该目录下的所有内容
./data 目标路径:主机上的目录(将把容器内的文件复制到此)

命令执行效果

这条命令会将容器名为 carver-hyperf 的 Docker 容器中 /home/carver-hyperf/ 目录下所有文件和文件夹,复制到当前命令执行位置下的 data 目录( 已经映射到宿主机的根目录 )中。

执行前目录结构示例:

当前目录/
├── other-files.txt
└── (还没有 data 目录)

执行后目录结构示例:

当前目录/
├── other-files.txt
└── data/                    (新创建的目录)
    ├── app/
    ├── bin/
    ├── config/
    ├── vendor/
    ├── .env
    ├── composer.json
    └── (其他从容器中复制来的所有文件)

注意事项和常见用法

  1. 路径末尾的斜杠和点号

    • /home/carver-hyperf/  复制的是整个目录本身(会创建一个 carver-hyperf 文件夹到 ./data)

    • /home/carver-hyperf/.  复制的是该目录下的所有内容(直接放入 ./data)

  2. 如果 ./data 目录不存在
    Docker 会自动创建它。

  3. 如果 ./data 目录已存在
    容器中的文件会被复制到该目录下,同名文件会被覆盖

  4. 反向操作
    如果你想把主机上的文件复制到容器里,可以反转参数顺序:

    # 从主机复制到容器
    docker cp ./some-file.txt carver-hyperf:/home/carver-hyperf/
  5. 容器状态
    docker cp 命令可以在容器处于任何状态(运行中、已停止、已退出)时执行。

posted @ 2025-09-16 19:22  Carvers  阅读(727)  评论(0)    收藏  举报