在 Docker 中,将容器内的文件拷贝到宿主机(即容器外部)可以通过以下几种方法实现:
docker cp
命令这是最直接的方式,语法如下:
docker cp <容器名或ID>:<容器内文件路径> <宿主机目标路径>
/app/data.txt
拷贝到宿主机的 /home/user/
目录:
bash
docker cp my_container:/app/data.txt /home/user/
-r
递归复制):
bash
docker cp my_container:/app/logs/ /home/user/
docker cp
仍可工作。/
开头)。如果容器启动时已挂载宿主机目录,文件会自动同步到宿主机。
bash
docker run -v /宿主机路径:/容器内路径 my_image
docker export
)适用于需要备份整个容器文件系统的场景。
.tar
文件:
bash
docker export my_container > my_container.tar
bash
tar -xf my_container.tar -C /目标目录/
临时创建一个共享数据的容器,再从中拷贝文件。
# 创建临时容器并挂载目标目录
docker create --name temp_container -v /宿主机路径:/data my_image
# 从原容器拷贝文件到临时容器
docker cp my_container:/app/file.txt temp_container:/data/
# 删除临时容器(文件已保留在宿主机挂载目录)
docker rm temp_container
权限不足:
sudo
)。chmod
调整)。路径错误:
bash
docker exec -it my_container ls /app/
文件覆盖:
docker cp
会直接覆盖。docker cp
(简单直接)。-v
挂载目录(高效实时)。docker export
(完整导出)。根据实际需求选择最适合的方法即可。