首页 > 其他分享 >软件测试|Docker cp命令详解:在Docker容器和主机之间复制文件/文件夹

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

时间:2023-09-15 12:13:29浏览次数:40  
标签:docker tomcat 主机 PATH Docker cp 目录 软件测试

在这里插入图片描述

简介

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 指定一个文件时

  1. DEST_PATH 不存在

创建 DEST_PATH 所需的文件夹,文件正常保存到 DEST_PATH

  1. DEST_PATH 不存在,并以 / 结尾

命令将报错,目标目录必须存在

  1. DEST_PATH 存在并且是一个文件

目标被源文件的内容覆盖

  1. DEST_PATH 存在并且是目录

使用 SRC_PATH 中的基本名称将文件复制到此目录中

SRC_PATH指定目录

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

  2. 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环境中进行文件操作和共享。

获取更多技术资料,请点击!

标签:docker,tomcat,主机,PATH,Docker,cp,目录,软件测试
From: https://www.cnblogs.com/hogwarts/p/17704736.html

相关文章

  • 软件测试|使用PyMySQL访问MySQL数据库的详细指南
    简介PyMySQL是Python中流行的MySQL数据库驱动程序,它提供了便捷的方法来连接、查询和更新MySQL数据库。本文将为您提供使用PyMySQL访问MySQL数据库的详细指南,包括安装PyMySQL、连接数据库、执行查询和更新操作等。获取更多技术资料,请点击!环境准备在开始之前,您需要确保已经安装......
  • 软件测试|深入学习 Docker Logs
    简介Docker是一种流行的容器化技术,它能够帮助用户将应用程序及其依赖项打包成一个可移植的容器。Dockerlogs是Docker提供的用于管理容器日志的命令,本文将深入学习Dockerlogs的使用和管理,帮助用户更好地监测和解决容器问题。DockerLogs命令dockerlogs命令是Docker......
  • 软件测试|Docker Kill/Pause/Unpause命令详细使用指南
    简介Docker是一种流行的容器化平台,提供了各种命令和功能来管理和操作容器。本文将详细介绍Docker中的三个重要命令:kill、pause和unpause。我们将深入了解它们的作用、用法和示例,帮助您更好地理解和使用这些命令。什么是DockerKill/Pause/Unpause命令?Docker提供了几个与容器生......
  • 软件测试|Docker exec命令详细使用指南
    简介Dockerexec命令是Docker提供的一个强大工具,用于在正在运行的容器中执行命令。本文将详细介绍Dockerexec命令的用法和示例,帮助大家更好地理解和使用这个命令。Docker是一种流行的容器化平台,允许我们在容器中运行应用程序。有时候,在容器内执行命令可以帮助我们调试、排查问......
  • docker部署 grafana Loki 轻量级日志
    这是一篇关于讲解如何正确使用51CTO博客-Markdown的排版示例,希望通过此,大家都能轻松上手,都能通过Markdown能够让自己的文章有更加出色、更清晰明了的排版。什么是MarkdownMarkdown(MD)是现在普遍使用的一种文档书写语言格式,只需用一些非常简单易记的符号,如(#*/>[]()\),......
  • 软件测试|Python Selenium 库安装使用指南
    简介Selenium是一个用于自动化浏览器操作的强大工具,它可以模拟用户在浏览器中的行为,例如点击、填写表单、导航等。在本指南中,我们将详细介绍如何安装和使用Python的Selenium库。安装Selenium库使用以下命令可以通过pip安装Selenium库:pipinstallselenium安装WebDriver......
  • 软件测试|好用的pycharm插件推荐(四)——Translation
    前言在我们的日常工作中,经常会遇到需要查看各个第三方库源码的问题,在很多情况下,我们的英语能力不能够满足我们完全读懂源码,所以我们就需要借助翻译工具来帮助我们理解第三方库的源码,如果我们将源码复制再使用其他工具翻译,会显得比较繁琐,如果有一个直接翻译的插件能够使用的话,就会方......
  • DHCP抓包-Wireshark分析
    1、DHCP协议DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。DHCP采用UDP的68(客户端)和67(服务器)端口进行通信。2、Wireshark抓包分析工具Wireshark(前称Ethereal)是一个网络封包分析软......
  • 在 Linux Docker 容器中安装 Windows 虚拟机
    1查看或开启虚拟化我们需要检查我们的系统是否支持虚拟化。由于我们的容器将运行虚拟机管理程序,因此除非主平台支持虚拟化,否则它将无法工作。物理机可以通过bios进行开启,虚拟机也需要开启。这个是虚拟化的内容,所以自行百度打开sudoegrep-c'(vmx|svm)'/proc/cpuinfo2安......
  • Xilinx平台以太网接口(一)TCP-IP基础
    汇总篇:XilinxFPGA平台以太网接口(汇总篇)_xilinxethernet_子墨祭的博客-CSDN博客 本系列文章基于xilinx三速以太网IP进行学习介绍。在完成以太网通信实验之前,必须要对以太网基础知识进行了解。时间充裕的可以看看《图解TCP/IP》作为扫盲。本文重点对以太网帧结构进行介绍。......