将文件从Docker容器复制到主机

时间:2019-09-09 00:13:56

标签: docker

还有其他方法可以通过在容器中运行命令来将文件或文件夹从docker容器复制到主机吗?

我阅读的所有其他问题都建议在主机上运行docker cp命令。

2 个答案:

答案 0 :(得分:1)

  

也可能是Copying files from Docker container to host

的副本

是的,对于在容器和主机之间复制文件,您将始终获得2个选项:

选项1:使用docker cp <containerid>:/<path> <host-path> more

无法从容器运行此命令的原因是由于封装(containerization principle)。因此,依赖性是单向的。 主机知道容器,容器不知道主机。打个比方,想想一艘船上真正的集装箱,一旦集装箱被关闭,您就无法将集装箱内的货物从集装箱内运到船上-除非船上有人决定将其打开(当然,除非您的集装箱不是毫不妥协,他们在容器外壳上打了一个洞)

选项2:使用docker volumes (推荐-more

在这种情况下,您将mount <host-path>放入容器中(在执行docker run期间-或属于业务流程),并且运行的命令是:{{1} }。容器甚至不知道主机上的实际路径

还有cp <from> <to>的问题。知道容器中的任何路径已经在主机上了,您可以使用why do you need to copy ?找到该文件/文件夹路径,然后从docker inspect <containerid>复制。因此,给出要复制哪种类型的数据以及出于何种原因以及在哪种环境(DEV / PROD)可能会给您其他选择的整个上下文。

答案 1 :(得分:0)

假设您的容器ID是abc123,您可以这样做

docker cp abc123:/path/to/file /host/destination/folder

如果要在主机容器之间共享文件夹,最好的选择是VOLUMES。

如果您无法销毁容器,则始终可以安装ssh客户端并使用scp。