从Docker容器复制文件到主机

14

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

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


1
可能是从主机复制文件到Docker容器的重复问题。 - Adiii
2个回答

10

可能也是 从Docker容器复制文件到主机 的重复

您说得对,要在容器和主机之间复制文件,您将始终有两个选项:

选项1:使用 docker cp <containerid>:/<path> <host-path> (更多)

您无法从容器中运行此命令的原因是封装(容器化原理)。因此,依赖关系是单向的。主机知道容器,但容器不知道主机。类比一下实际货船上的货柜,一旦货柜关闭,您就不能从货柜内部将货物移动到船上,除非有人从船上决定打开它(当然,除非您的容器没有被破坏并且他们在容器外壳上打了个洞)。

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

在这种情况下,您可以在容器中挂载<host-path>(在执行docker run期间或作为编排的一部分),并运行以下命令:cp <from> <to>。容器甚至不知道它实际上是主机上的真实路径

还有一个问题,为什么需要复制?。已知容器中的任何路径都已在主机上,您可以使用docker inspect <containerid>查找文件/文件夹路径,并从/var/lib/docker/containers/<containerid>/<path>复制。因此,在给出要复制的数据类型、原因以及在哪个环境(DEV/PROD)中的整个上下文下,可能会给您提供其他选项。


1
假设您的容器id为abc123,您可以执行以下操作
docker cp abc123:/path/to/file /host/destination/folder

如果您想在主机和容器之间共享文件夹,最好的选择是使用卷。
如果您无法销毁容器,则始终可以安装ssh客户端并使用scp。

我无法从容器中运行这个。我需要在容器中可以运行的命令。 - bananagator
请使用VOLUME或SCP。 - Ernesto Campohermoso

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接