7. 容器内文件复制命令

docker cp 命令用于在 Docker 容器 和 本地宿主机 之间复制文件或目录,双向传输支持。

docker cp 命令

命令格式

# 容器 到 宿主机复制
docker cp [选项] 容器名或容器ID:容器内源路径 宿主机目标路径或-

# 宿主机 到 容器复制
docker cp [选项] 宿主机源路径或- 容器名或容器ID:容器内目标路径

命令别名:docker container cp

使用 减号 - 代替宿主机源路径,则从标准输入中读取归档的 tar 包并解压缩到目标容器。

使用 减号 - 代替宿主机目标路径,则从标准输出中返回 tar 包的归档数据流,可用管道等进行保存和压缩。

常用选项

选项
说明
-a
归档模式复制(复制所有 UID/GID 信息)。
-L
复制符号链接指向的实际文件。

示例

复制 mysql_server 容器内的配置文件 /etc/my.cnf 到当前路径。

weimingze@mzstudio:~$ sudo docker cp mysql_server:/etc/my.cnf .
Successfully copied 2.56kB to /home/weimingze/.
weimingze@mzstudio:~$ ls
hello.py   my.cnf  myproject.tar.xz
weimingze@mzstudio:~$

复制当前路径下的 hello.py 文件到 容器 mysql_server/root/文件夹下

weimingze@mzstudio:~$ sudo docker cp hello.py mysql_server:/root/
Successfully copied 2.05kB to mysql_server:/root/
weimingze@mzstudio:~$

复制归档文件 myproject.tar.xz 并解压缩到容器 mysql_server/root/ 文件下。

weimingze@mzstudio:~$ cat myproject.tar.xz | sudo docker cp - mysql_server:/root/
Successfully copied 0B to mysql_server:/root/
weimingze@mzstudio:~$ sudo docker exec -it mysql_server /bin/bash
bash-5.1# ls /root/
hello.py  myproject
bash-5.1#