有没有其他方法可以通过在容器中运行命令来将文件或文件夹从 docker
容器复制到主机?
我看到的所有其他问题都建议在主机上运行 docker cp
命令。
有没有其他方法可以通过在容器中运行命令来将文件或文件夹从 docker
容器复制到主机?
我看到的所有其他问题都建议在主机上运行 docker cp
命令。
可能也是 从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)中的整个上下文下,可能会给您提供其他选项。
docker cp abc123:/path/to/file /host/destination/folder