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

 更新时间:2024年07月30日 08:37:51   作者:霍格沃兹测试开发学社  
要从Docker容器中复制文件,可以使用docker cp命令,下面这篇文章主要给大家介绍了关于Docker cp命令详解之如何在Docker容器和主机之间复制文件/文件夹的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下

简介

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 为路径的目录,并将源目录的内容复制到该目录中

使用示例

从容器复制文件到主机

  • 主机目录已存在

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

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

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

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

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

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

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

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

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

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

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

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

运行命令,结果如下:

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

从主机复制文件到容器

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

docker cp test.txt tomcat_muller:/

运行命令,结果如下图:

从主机复制目录到容器

  • 目标目录不存在

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

docker cp hogwarts tomcat_muller:test/

运行命令,结果如下图:

  • 目标目录为一个文件

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

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

我们要将主机的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 cp命令详解之如何在Docker容器和主机之间复制文件/文件夹的文章就介绍到这了,更多相关Docker容器和主机复制文件/文件夹内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker搭建NetBox的实现示例

    Docker搭建NetBox的实现示例

    NetBox是一个开源的数据中心基础设施管理和IP地址管理平台,本文主要介绍了Docker搭建NetBox的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04
  • CentOS Stream 9 服务器 Docker 部署 KaiwuDB 实战指南

    CentOS Stream 9 服务器 Docker 部署 

    本文详细记录了使用Docker部署KaiwuDB的过程,并包括模数据库支持序表与关系表跨模查询实战,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2026-06-06
  • 如何解决docker镜像在不同cpu架构上运行容器报错问题

    如何解决docker镜像在不同cpu架构上运行容器报错问题

    文章主要介绍了如何查看本地Docker镜像的CPU架构类型,并提供了解决x86镜像无法在ARM CPU上运行的问题的方法,通过在Dockerfile中使用`--platform`参数指定CPU架构,可以在构建镜像时选择正确的版本,从而解决架构不匹配的问题
    2024-12-12
  • 解决docker run hello-world遇到错误消息-error during conne

    解决docker run hello-world遇到错误消息-error during&n

    这篇文章主要介绍了解决docker run hello-world遇到错误消息-error during conne问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • docker 中的–mount 和-v 参数区别解析

    docker 中的–mount 和-v 参数区别解析

    这篇文章主要介绍了docker 中的–mount 和-v 参数区别解析,--mount 更为灵活,适用于更复杂的挂载需求,使用哪种方式主要取决于个人或团队的偏好和具体的使用场景,需要的朋友可以参考下
    2023-12-12
  • Docker案例分析:搭建Redis服务

    Docker案例分析:搭建Redis服务

    这篇文章主要介绍了Docker案例分析:搭建Redis服务方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Docker swarm 简单使用教程

    Docker swarm 简单使用教程

    Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源,接下来通过本文给大家介绍Docker swarm 简单使用,感兴趣的朋友一起看看吧
    2021-11-11
  • Docker上部署FastApi的示例代码

    Docker上部署FastApi的示例代码

    本文主要介绍了Docker上部署FastApi的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 解决docker run 或者 docker restart 启动镜像就自动退出

    解决docker run 或者 docker restart 启动镜像就自动退出

    这篇文章主要介绍了解决docker run 或者 docker restart 启动镜像就自动退出的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • docker 安装TDengine 时序数据库的技术指南

    docker 安装TDengine 时序数据库的技术指南

    TDengine是一个高性能、分布式a的时序数据库,专为物联网(loT)和大数据分析日设计,下面给大家分享docker 安装TDengine 时序数据库的技术指南,感兴趣的朋友一起看看吧
    2025-04-04

最新评论