如何将文件从 docker 容器共享到主机
Posted
技术标签:
【中文标题】如何将文件从 docker 容器共享到主机【英文标题】:How to share file from docker container to host 【发布时间】:2018-06-08 02:38:15 【问题描述】:我有一个运行良好的 docker 容器。它会在/Project/userfiles.txt
目录中生成一些文件。我需要这些文件用于某些测试目的。但是当这个容器停止时,一切都会被删除。所以我需要将此文件从容器复制到主机。
我在生成文件的容器中运行了一个 python 应用程序。我想要一些命令或任何方式,当容器停止时,我可以在最后将userfiles.txt
发送到主机。
为此,我可以使用docker cp
命令并尝试过,但它给了我一个错误docker not found
,因为未安装docker。
如何将文件从容器共享到主机?
【问题讨论】:
你在哪里跑docker cp
?
@vivekyad4v 对不起,我忘了提,我在容器中运行 docker cp,因为我的代码在那里运行,这个命令我在代码中提到。
您可以在主机本身上运行它。在容器内运行它的任何具体原因?
Copying files from host to Docker container的可能重复
Copying files from Docker container to host的可能重复
【参考方案1】:
使用 volume(绑定挂载)确保 /Project 中写入的文件被持久化。
这意味着您需要使用-v /host/path:/Project
选项来运行您的映像。
请参阅“Use bind mounts”了解最简单的方法(即与您的容器共享主机文件夹)
【讨论】:
你能解释更多吗?如果我使用-v /host/path:/Project
docker 运行,那么在容器停止后我将在/host/path
中获得userfile.txt
。?
没错,你可以在那里访问它。【参考方案2】:
在主机上而不是在容器内使用docker cp
。在您的情况下,命令可能如下所示 -
$ docker cp mycontainer:/Project/userfiles.txt userfiles.txt
命令完成后,您将在主机上运行docker cp
命令的目录中获取文件。
PS - 我刚刚检查了它是否可以工作,即使您的容器处于停止状态。例如 -
$ docker cp 9059e95cbe33:/etc/rc.local rc.local
9059e95cbe33 - Exited container ID/Name
【讨论】:
【参考方案3】:使用以下命令:
docker ps -a
在使用 docker 运行的列末尾获取名称。
docker cp CONTAINER-NAMES:CONTAINER_DIR-to-copy PATH-to-Copy
例子:
docker cp <xxx_yyy>:/folder/path/in/Container/to/copy /home/user/path/to/copy
【讨论】:
以上是关于如何将文件从 docker 容器共享到主机的主要内容,如果未能解决你的问题,请参考以下文章
如何将文件/文件夹从 Windows 共享位置复制到 docker 容器中?
docker cp:从容器复制文件到宿主机,从宿主机复制文件到容器