如何将文件从 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 容器中?

docke存储

如何将文件从 dockerfile 复制到主机?

docker cp:从容器复制文件到宿主机,从宿主机复制文件到容器

docker cp:从容器复制文件到宿主机,从宿主机复制文件到容器

docker cp:从容器复制文件到宿主机,从宿主机复制文件到容器