还有其他方法可以通过在容器中运行命令来将文件或文件夹从docker
容器复制到主机吗?
我阅读的所有其他问题都建议在主机上运行docker cp
命令。
答案 0 :(得分:1)
的副本
是的,对于在容器和主机之间复制文件,您将始终获得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。