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 都能轻松应对。

猜你喜欢

转载自blog.csdn.net/qq_40797754/article/details/143407346