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#