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

西河刘卡车医  金牌会员 | 2024-7-23 14:13:35 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 911|帖子 911|积分 2733


简介

Docker是一种流行的容器化平台,它允许开发人员在独立、可移植的情况中构建、打包和摆设应用程序。在利用Docker时,经常必要在Docker容器和主机之间进行文件的复制和共享。Docker提供了一个名为docker cp的命令,可以轻松地在容器和主机之间复制文件和目录。本文将详细先容docker cp命令的利用方法和常见示例。
docker cp命令

docker cp命令是Docker提供的一个用于在主机和容器之间复制文件和目录的命令。它的语法如下:
  1. docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
  2. docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
复制代码


  • CONTAINER,可以是正在运行或已停止的容器,名称或ID均可
  • SRC_PATH,源文件或目录在容器内的路径
  • DEST_PATH,目标路径在主机上的位置
注:docker cp命令会假定容器路径相对于容器的 /(根)目录,主机路径则是相对于执行 docker cp 命令的当前目录
options可用参数


  • -a:将复制的文件或目录保留其原始属性,包括所有者、权限等。
  • -L:如果SRC_PATH是一个符号链接,则复制链接指向的文件或目录。
  • -p:保留源文件或目录的时间戳。
  • -R或-r:递归复制整个目录。
SRC_PATH & DEST_PATH

SRC_PATH和DEST_PATH是docker cp命令关键的部分,路径是否正确关系到命令能否运行成功,下面我们来分析这两个路径的各种情况,并说明各种情况下是否能成功复制。
SRC_PATH 指定一个文件时


  • 当DEST_PATH 不存在
创建 DEST_PATH 所需的文件夹,文件正常生存到 DEST_PATH 中

  • 当DEST_PATH 不存在,并以 / 结尾
命令将报错,目标目录必须存在

  • 当DEST_PATH 存在而且是一个文件
目标被源文件的内容覆盖

  • 当DEST_PATH 存在而且是目录
利用 SRC_PATH 中的基本名称将文件复制到此目录中
SRC_PATH指定目录


  • 当DEST_PATH存在而且是目录时,复制将正常复制


  • SRC_PATH 不以 /. 结尾,源目录复制到此目录
  • SRC_PATH 以 /. 结尾,源目录的内容被复制到该目录中

  • 当DEST_PATH存在而且是一个文件时,复制将报错,由于无法将目录复制到文件中
  • 当DEST_PATH 不存在时,将新创建 DEST_PATH 为路径的目录,并将源目录的内容复制到该目录中
利用示例

从容器复制文件到主机


  • 主机目录已存在
我们要将tomcat_muller的usr/local/tomcat/README.md文件复制到主机的study目录下,命令如下:
  1. docker cp tomcat_muller:usr/local/tomcat/README.md ./
复制代码
运行命令,结果如下图,成功复制到指定目录下:


  • 主机目录不存在,不以/结尾
我们要将tomcat_muller的usr/local/tomcat/README.md文件复制到主机的study/test目录下,命令如下:
  1. docker cp tomcat_muller:usr/local/tomcat/README.md ./
  2. test
复制代码
运行命令,结果如下图,我们成功在study目录下创建了test目录,而且文件成功复制到了指定目录下


  • 主机目录不存在,而且以/结尾
我们要将tomcat_muller的usr/local/tomcat/README.md文件复制到主机的study/test/路径下,命令如下:
  1. docker cp tomcat_muller:usr/local/tomcat/README.md ./
  2. test/
复制代码
运行命令,结果如下图,由于路径不存在,所以会报错,没有这个目录


  • 复制到已经存在的文件中
  1. docker cp tomcat_muller:usr/local/tomcat/README.md test.txt
复制代码
运行命令,结果如下:

复制目录的操纵与复制文件的类似,这里不做赘述。
从主机复制文件到容器

我们要将主机study下的test.txt文件复制到容器中,命令如下:
  1. docker cp test.txt tomcat_muller:/
复制代码
运行命令,结果如下图:

从主机复制目录到容器


  • 目标目录不存在
我们要将主机的study/hogwarts目录复制到容器的test目录中,命令如下:
  1. docker cp hogwarts tomcat_muller:test/
复制代码
运行命令,结果如下图:


  • 目标目录为一个文件
我们要将主机的study/hogwarts目录复制到容器的muller中,命令如下:
  1. docker cp hogwarts tomcat_muller:muller/
复制代码

  • 目录已存在
我们要将主机的study/hogwarts目录复制到容器的/hogwarts中,命令如下:
  1. docker cp hogwarts tomcat_muller:/hogwarts/
复制代码
运行命令结果如下:

从容器复制目录到主机

我们将tomcat_muller容器中的webapps.dist目录复制到主机的usr/local/study中,命令如下:
  1. docker cp tomcat_muller:/usr/local/tomcat/webapps.dist /home/muller/study
复制代码
运行命令,结果如下图:

总结

docker cp命令是在Docker容器和主机之间复制文件和目录的便捷工具。通过简单的命令和参数,我们可以轻松地在容器和主机之间传输文件。本文先容了docker cp命令的语法和常见选项,并提供了几个示例以资助各人更好地理解其用法。通过机动利用docker cp命令,我们可以轻松地在Docker情况中进行文件操纵和共享。
获取更多软件测试技术资料/口试题解析,请点击!
视频干货合集
2024最新Python3.1x软件测试开发必备语法底子解说
7天软件测试快速入门教程
测试开发佳构公开课合集
测试开发/自动化测试/性能测试/精准测试/测试左移/测试右移/人工智能测试
大厂口试真题解析
JMeter实时性能监控平台


另免费赠予软件测试开发方面的专业资料包!助您事半功倍,提升技能,把握职场先机。
软件测试职业发展

零底子入门

测试必备编程篇

自动化测试

性能测试

测试管理

工程效能篇

口试求职篇
软件测试的口试宝典,内含一线互联网大厂口试真题、口试技巧、软件测试口试简历指导,免费领取!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

西河刘卡车医

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表