Docker 容器与主机间文件/文件夹拷贝

Docker 容器与主机间文件/文件夹拷贝

温馨提示:本文最后更新于2024-11-28 17:24:41,某些文章具有时效性,若有错误或已失效,请在下方留言

Docker 容器主机之间文件或者文件夹的拷贝是经常遇到的场景。Docker 提供了docker up 命令,可以轻松实现容器与主机之间文件或者文件夹的拷贝。

docker cp命令语法

docker cp命令的基本语法,如下

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

CONTAINER 容器的名称或者 ID,容器可以是停止也可以是运行的;

SRC_PATH 源文件或者目录的路径;

DEST_PATH 目标路径;

OPTIONS 的参数

  • -a: 将复制的文件或目录保留其原始属性,包括所有者、权限等。
  • -L: 如果SRC_PATH 是一个符号链接,则复制链接指向的文件或目录。

SRC_PATH

SRC_PATH 是一个指定的文件时:

  1. DEST_PATH 不存在,创建 DEST_PATH 所需的文件夹,文件正常保存到 DEST_PATH 中;
  2. DEST_PATH 不存在,并以 / 结尾,命令将报错,目标目录必须存在;
  3. DEST_PATH 存在并且是一个文件,目标被源文件的内容覆盖;
  4. DEST_PATH 存在并且是目录,使用 SRC_PATH 中的基本名称将文件复制到此目录中。

SRC_PATH 是一个指定的目录时:

  1. DEST_PATH存在并且是目录时,复制将正常复制
    1. SRC_PATH 不以 /. 结尾,源目录复制到此目录
    2. SRC_PATH/. 结尾,源目录的内容被复制到该目录中
  2. DEST_PATH存在并且是一个文件时,复制将报错,因为无法将目录复制到文件中
  3. DEST_PATH 不存在时,将新创建 DEST_PATH 为路径的目录,并将源目录的内容复制到该目录中

使用示例

容器到主机

容器复制文件到主机

1. 主机目录已经存在

a01ce10c49ca 容器的 /app/web/public/logo/logo-site.png 文件复制到 root 目录下的命令

docker cp a01ce10c49ca:/app/web/public/logo/logo-site.png ./

运行的结果如下所示

运行结果

2. 主机目录已经不存在,不以/结尾

a01ce10c49ca 容器的 /app/web/public/logo/logo-site.png 文件复制到 ai 目录下的命令

docker cp a01ce10c49ca:/app/web/public/logo/logo-site.png ./ai

相当于进行了文件重命名,将 logo-site.png 文件重命名为 ai

运行的结果如下所示

运行结果

3. 主机目录已经不存在,并且以/结尾

a01ce10c49ca 容器的 /app/web/public/logo/logo-site.png 文件复制到 /root/ai/ 目录下的命令

docker cp a01ce10c49ca:/app/web/public/logo/logo-site.png ./ai/

运行命令,结果如下图,因为路径不存在,所以会报错,没有这个目录

运行结果

4. 复制到已存在的文件

docker cp a01ce10c49ca:/app/web/public/logo/logo-site.png ./a.txt 

运行命令,结果如下图

运行结果

容器复制目录到主机

a01ce10c49ca 容器的 /app/web/public/logo 文件复制到 root 目录下的命令

docker cp a01ce10c49ca:app/web/public/logo /root

运行命令,结果如下图:

运行结果

主机到容器

从主机复制文件到容器

将主机的a.txt 文件复制到容器a01ce10c49ca中,命令如下所示

docker cp a.txt a01ce10c49ca:/app/web/public/logo/

运行命令,结果如下所示

运行结果

从主机复制目录到容器

将主机的svg 目录复制到容器/app/web/public/logo/中,命令如下所示

 docker cp svg a01ce10c49ca:/app/web/public/logo/

运行命令,结果如下所示

运行结果

参考

Docker cp命令详解:在Docker容器和主机之间复制文件/文件夹

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容