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
,我们希望将其复制到当前宿主机目录下。
-
启动容器并创建文件:
docker run -d --name my_container ubuntu bash -c "echo 'Hello, Docker!' > /hello.txt"
-
从容器复制文件到宿主机:
docker cp my_container:/hello.txt ./hello.txt
这将容器内的
/hello.txt
文件复制到当前宿主机目录下。 -
查看复制的文件内容:
cat hello.txt
输出:
Hello, Docker!
案例2:从宿主机复制文件到容器
现在,我们将宿主机上的 hello.txt
文件复制到容器 my_container
内的 /hello.txt
。
-
复制文件到容器:
docker cp ./hello.txt my_container:/hello.txt
这将宿主机上的
hello.txt
文件复制到容器my_container
内的/hello.txt
。 -
进入容器查看文件内容:
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
都能轻松应对。