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

 🔥 交流讨论:欢迎加入我们一起学习!

🔥 资源分享耗时200+小时精选的「软件测试」资料包

🔥 教程推荐:火遍全网的《软件测试》教程  

📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

简介

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

docker cp命令

docker cp命令是Docker提供的一个用于在主机和容器之间复制文件和目录的命令。它的语法如下:

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
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_PATHDEST_PATHdocker 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 为路径的目录,并将源目录的内容复制到该目录中
 

使用示例
从容器复制文件到主机
  1. 主机目录已存在

 我们要将tomcat_mullerusr/local/tomcat/README.md文件复制到主机的study目录下,命令如下:

docker cp tomcat_muller:usr/local/tomcat/README.md ./

 运行命令,结果如下图,成功复制到指定目录下:

  

  1. 主机目录不存在,不以/结尾

我们要将tomcat_mullerusr/local/tomcat/README.md文件复制到主机的study/test目录下,命令如下:

docker cp tomcat_muller:usr/local/tomcat/README.md ./test

运行命令,结果如下图,我们成功在study目录下创建了test目录,并且文件成功复制到了指定目录下 

  1. 主机目录不存在,并且以/结尾

我们要将tomcat_mullerusr/local/tomcat/README.md文件复制到主机的study/test/路径下,命令如下:

docker cp tomcat_muller:usr/local/tomcat/README.md ./test/

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

 

  1. 复制到已经存在的文件中
docker cp tomcat_muller:usr/local/tomcat/README.md test.txt

运行命令,结果如下:

复制目录的操作与复制文件的类似,这里不做赘述。

从主机复制文件到容器

我们要将主机study下的test.txt文件复制到容器中,命令如下:

docker cp test.txt tomcat_muller:/

运行命令,结果如下图:

从主机复制目录到容器 

  1. 目标目录不存在

我们要将主机的study/hogwarts目录复制到容器的test目录中,命令如下:

docker cp hogwarts tomcat_muller:test/

运行命令,结果如下图:

  1. 目标目录为一个文件

我们要将主机的study/hogwarts目录复制到容器的muller中,命令如下

docker cp hogwarts tomcat_muller:muller/
  1. 目录已存在

我们要将主机的study/hogwarts目录复制到容器的/hogwarts中,命令如下:

docker cp hogwarts tomcat_muller:/hogwarts/

运行命令结果如下:

 

从容器复制目录到主机

我们将tomcat_muller容器中的webapps.dist目录复制到主机的usr/local/study中,命令如下:

docker cp tomcat_muller:/usr/local/tomcat/webapps.dist /home/muller/study

运行命令,结果如下图:

总结

docker cp命令是在Docker容器和主机之间复制文件和目录的便捷工具。通过简单的命令和参数,我们可以轻松地在容器和主机之间传输文件。本文介绍了docker cp命令的语法和常见选项,并提供了几个示例以帮助大家更好地理解其用法。通过灵活使用docker cp命令,我们可以轻松地在Docker环境中进行文件操作和共享。
 

最后我邀请你进入我们的【软件测试学习交流群:785128166】, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:程序员二黑】自提!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/329241.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安泰功率信号源设计方法有哪些

在电子系统中,功率信号源是一个关键的组成部分,用于提供稳定、可靠的电能。这篇文章将详细介绍功率信号源的设计方法,包括选择功率源类型、设计电源拓扑结构、提高效率和管理电磁干扰等方面。 1.功率源类型的选择 选择适当的功率源类型是功率…

MySQL下对[库]的操作

目录 创建数据库 创建一个数据库案例: 字符集和校验规则: 默认字符集: 默认校验规则: 查看数据库支持的字符集: 查看数据库支持的字符集校验规则: 校验规则对数据库的影响: 操作数据…

【计算机硬件】3、输入输出技术、总线结构

文章目录 输入输出技术内存与接口地址的编址方法1、 内存与接口地址独立编址方法2、内存与接口地址统一编址方法 计算机和外设间的数据交互方式1、程序控制(查询)方式2、程序中断方式3、DMA方式(直接主存存取) 总线结构 输入输出技术 内存与接口地址的编…

Ivanti Connect Secure 曝两大零日漏洞,已被大规模利用

威胁情报公司Volexity发现,影响 Ivanti 的 Connect Secure VPN 和 Policy Secure 网络访问控制 (NAC) 设备的两个零日漏洞正在被大规模利用。自1月11日开始,多个威胁组织在大范围攻击中利用CVE-2023-46805身份验证绕过和CVE-2024-21887命令注入漏洞。 V…

二叉树【Java】

文章目录 一、树型结构二、二叉树2.1概念2.2两种特殊的二叉树2.3二叉树的性质2.4二叉树的遍历 三、二叉树的基本操作3.1获取树中节点的个数3.2获取叶子节点的个数3.3获取第K层节点的个数3.4获取二叉树的高度3.5检测值为value的元素是否存在 一、树型结构 树是一种非线性的数据…

界面设计工具有哪些?看看这5个!

即时设计 - 可实时协作的专业 UI 设计工具即时设计是一款支持在线协作的专业级 UI 设计工具,支持 Sketch、Figma、XD 格式导入,海量优质设计资源即拿即用。支持创建交互原型、获取设计标注,为产设研团队提供一站式协同办公体验。https://js.d…

【C/C++】C/C++编程——C/C++简介

C 语言简介 C 语言是一种通用的、高效的编程语言,广泛用于软件开发。它最初由丹尼斯里奇(Dennis Ritchie)在 1972 年于贝尔实验室开发,用于重新实现 Unix 操作系统。C 语言以其简洁、高效、灵活和跨平台的特点而闻名。 C 语言的主…

工商业屋顶光伏项目如何操作?

鹧鸪云 随着可再生能源的日益重要,工商业屋顶光伏项目已成为许多企业实现绿色能源转型的重要途径。本文将详细介绍工商业屋顶光伏项目的操作流程,帮助企业更好地实施这一项目。 一、项目前期准备 需求分析:明确企业的能源需求,评…

el-date-picker如果超过限制跨度则提示

需求:实现日期时间选择组件跨度如果超过限制天数,点击查询则提示超过限制时间 封装一个方法,传入开始和结束时间以及限制天数,如果超过则返回false //计算时间跨度是否超过限制天数isTimeSpanWithinLimit(startTime, endTime, li…

嵌入式开发--STM32G4系列片上FLASH的读写

这个玩意吧,说起来很简单,就是几行代码的事,但楞是折腾了我大半天时间才搞定。原因后面说,先看代码吧: 读操作 读操作很简单,以32位方式读取的时候是这样的: data *(__IO uint32_t *)(0x080…

Grafana(二)Grafana 两种数据源图表展示(json-api与数据库)

一. 背景介绍 在先前的博客文章中,我们搭建了Grafana ,它是一个开源的度量分析和可视化工具,可以通过将采集的数据分析、查询,然后进行可视化的展示,接下来我们重点介绍如何使用它来进行数据渲染图表展示 Docker安装G…

CSS Day10

10.1 2D位移 属性名:transform 属性值:translateX 水平方向的位移 相对于自身位置移动 translateY 垂直方向的位移 相对于自身位置移动 transform:translate(x,y); 位移和定位搭配使用: position:absolute; top:50%; left:50%; tr…

HCIP-BGP实验2

一.实验要求 全网可达! 二.实验步骤 1.配置好所有环回和路由的ip R1 [r1]dis ip int brief Interface IP Address/Mask Physical Protocol GigabitEthernet0/0/0 12.1.1.1/24 up up …

取消lodash.throttle中的默认执行完最后一次函数

我的场景: 我有一个列表,我考虑用户连续点击删除的情况,如果用户连续点击,可能会导致数据库中的数据被删除了,但是我还需要刷新数据列表才能反应到页面上,可是这时候用户又点击了同一条数据的删除按钮多次,导致发起了…

QT quick基础:组件gridview

组件gridview与android中gridview布局效果相同。 一、下面记录qt quick该组件的使用方法。 方法一: // ContactModel.qml import QtQuick 2.0ListModel {ListElement {name: "1"portrait: "icons/ic_find.png"}ListElement {name: "2&quo…

《Kali渗透基础》16. 密码攻击

kali渗透 1:身份认证2:密码破解2.1:应用场景2.2:方法简介 3:字典生成工具3.1:Crunch3.2:CUPP3.3:Cewl3.4:JTR 4:密码破解工具4.1:在线密码破解4.1…

AIOps探索 | 基于大模型构建高效的运维知识及智能问答平台(2)

前面分享了平台对运维效率提升的重要性和挑战以及基于大模型的平台建设解决方案,新来的朋友点这里,一键回看精彩原文。 基于大模型构建高效的运维知识及智能问答平台(1)https://mp.csdn.net/mp_blog/creation/editor/135223109 …

【vscode】6、调试 shell

文章目录 经常在 IDE 下使用 高级语言后,往往并不习惯 shell 编程,因为没有酷炫的界面。但现在 vscode 可以很方便的调试 shell 脚本。 配置方法如下: vscode 下载 Bash Debug 插件 mac 升级 bash 版本(因为此 vscode 插件需要 b…

腾讯云的域名使用阿里云服务器配置

因为近期云服务器到期了,之前的域名已经完成了备案不想轻易回收。于是就换了个厂商,从腾讯云换到了阿里云。但是因为两个厂商不互通。我又不想把域名转入到阿里云。所以就开启了配置之路,一路磕磕绊绊。给大家整理一份顺序,一步到…

深入解析:如何使用Java、SpringBoot、Vue.js和MySQL构建课表管理系统

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…