当前位置: 首页 > article >正文

Docker cp命令详解及实战案例

Docker cp命令简介

docker cp 是Docker提供的一个实用命令,用于在Docker容器和宿主机之间复制文件或目录。这个命令支持从容器到宿主机,以及从宿主机到容器的文件复制操作。

命令语法

docker cp 的基本语法如下:

docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
  • SRC_PATH:源路径(可以是容器内的路径或宿主机的路径)。
  • CONTAINER:容器的名称或ID。
  • DEST_PATH:目标路径(可以是容器内的路径或宿主机的路径)。

参数说明

  • -a, --archive:归档模式,复制时保留文件属性。
  • L:跟随符号链接。

实战案例

案例1:从容器复制文件到宿主机

假设我们有一个名为 my_container 的容器,其中有一个文件 /hello.txt,我们希望将其复制到当前宿主机目录下。

  1. 启动容器并创建文件

    docker run -d --name my_container ubuntu bash -c "echo 'Hello, Docker!' > /hello.txt"
    
  2. 从容器复制文件到宿主机

    docker cp my_container:/hello.txt ./hello.txt
    

    这将容器内的 /hello.txt 文件复制到当前宿主机目录下。

  3. 查看复制的文件内容

    cat hello.txt
    

    输出:

    Hello, Docker!
    

案例2:从宿主机复制文件到容器

现在,我们将宿主机上的 hello.txt 文件复制到容器 my_container 内的 /hello.txt

  1. 复制文件到容器

    docker cp ./hello.txt my_container:/hello.txt
    

    这将宿主机上的 hello.txt 文件复制到容器 my_container 内的 /hello.txt

  2. 进入容器查看文件内容

    docker exec -it my_container cat /hello.txt
    

    输出:

    Hello, Docker!
    

案例3:复制整个目录

如果你想复制整个目录,可以使用 -a 选项以归档模式复制,这会保留文件夹结构。

从容器复制到宿主机
docker cp -a my_container:/path/to/directory /path/on/host
从宿主机复制到容器
docker cp -a /path/on/host my_container:/path/to/directory

案例4:使用标准输入输出

docker cp 命令还支持从标准输入读取或写入到标准输出,这在处理流式数据时非常有用:

docker cp my_container:/tmp/test.db - > ./data/test.db

案例5:结合管道使用

我们可以结合管道(pipe)和其他命令,实现更复杂的操作。例如,压缩容器中的目录并直接保存到本地:

docker exec my_container tar czf - /tmp/data | docker cp - ./data.tar.gz

这个命令将容器中的 /tmp/data 目录压缩并保存到宿主机的当前目录下,命名为 data.tar.gz

总结

docker cp 是一个非常强大的工具,它允许我们在Docker容器和宿主机之间高效地复制文件和目录。通过上述案例,我们可以看到它的灵活性和实用性。无论是单个文件的复制,还是整个目录的迁移,docker cp 都能轻松应对。


http://www.kler.cn/a/382133.html

相关文章:

  • Linear Algebra Done Right-线性代数应该这样学-学习笔记-3
  • 如何区分实例化网格中的每个实例
  • 在Java中,实现数据库连接通常使用JDBC
  • 2024年【汽车修理工(高级)】考试总结及汽车修理工(高级)试题及解析
  • 【JAVA】Java基础—基础语法:数据类型(基本数据类型与引用数据类型)
  • LWIP通信协议UDP发送、接收源码解析
  • Python并发编程——multiprocessing
  • 自动化仓库堆垛机结构解析
  • 2025年山东省考报名流程图解
  • 基于stm32的火灾报警系统(开源)
  • vue使用方法创建组件
  • FRP反向代理使用
  • 使用 OpenCV 实现图像的透视变换
  • 数据结构,问题 E: 表达式括号匹配
  • 英语写作中用identify 替代find
  • Interpreter 解释器模式
  • 【C++组合数学】2850. 将石头分散到网格图的最少移动次数|2001
  • 51单片机教程(五)- LED灯闪烁
  • html练习2
  • 工作中问题
  • SQL,力扣题目1767,寻找没有被执行的任务对【递归】
  • 【点云学习笔记】——分割任务学习
  • 常见的排序算法(二)
  • 微信小程序的汽车维修预约管理系统
  • 【xml转JSON】
  • nginx 搭建网站