从Docker容器复制文件到主机失败

12
$ docker cp maven-container_:xxxx.war /home/wissem/Documents/docker-stage/wildfly-configured/target/

守护程序错误响应:lstat

/var/lib/docker/aufs/mnt/afbdc7f4ce3165fb2e6c34929841b9fa911de1978887dd5b9b0804e4f624af2d /xxxx.war:没有这个文件或目录

错误:作业失败:退出状态1


你需要从正在运行的实例中复制,而不是从映像中复制。因此,我假设maven-container_是您启动的容器的名称,而不是一个映像。此外,请在“:”后使用完整路径,“docker cp maven-container_:/path/inside/container/xxxx.war /home/wissem/Documents/docker-stage/wildfly-configured/target/”。 - Tarun Lalwani
已解决:问题出在我的路径上:docker cp maven-container_:/opt/maven/targe/xxxx.war .... - Mahjoub Wissem
4个回答

19
您需要从正在运行的实例中复制,而不是从映像中复制。因此,我假设maven-container_是您启动的容器的名称,而不是映像。在:之后使用完整路径。
docker cp maven-container_:/path/inside/container/xxxx.war /home/wissem/Documents/docker-stage/wildfly-configured/targe‌​t/

谢谢,帮助我找出了问题。 - Ken Ingram
2
doesn't need to be running - caduceus
4
从图像复制而不运行它 - 创建一个带有名称的容器。Docker 命令:docker create my_image_tag --name my_cont_name; docker cp my_cont_name:/path/file /home/... - Stevko
谢谢,我试图在我的测试容器完成测试后复制输出。我猜测测试镜像与docker run实例不同,后者是容器镜像的分支,在完成时会丢失? - djangofan

10

尝试在根文件夹下复制文件时,我遇到了这个错误(似乎与@uthomas的答案有关)。

$ docker cp dreamy_brown:/root/myfile.txt ~
Error: No such container:path: dreamy_brown:/root/myfile.txt
解决方案:首先在容器内将文件移动到/tmp文件夹中。
$ mv /root/myfile.txt /tmp

然后我成功将它复制到主机上:

$ docker cp dreamy_brown:/tmp/myfile.txt ~

对于“解决方案”步骤中的任何其他人,请首先进入容器。我是在compose内运行的:$docker-compose exec CONTAINER_NAME bash。这将把我带到/root/,然后我可以像说明中那样移动/复制文件到tmp中。 - kevin_theinfinityfund

6

对我来说它没有起作用,因为权限的问题。我正在尝试复制的文件属于postgres用户,而默认用户似乎是root。


很奇怪,因为root用户应该可以访问所有内容。我尝试了@asherbret的suggestion,先将它们移动到/tmp,但这并没有帮助。此外,我正在查看的文件是由root拥有,权限为-rw-r--r--.,并且不是链接。除非它们是根源问题,因为在我的情况下容器的默认用户是其他东西...不,whoami说是root。 - Kevin

0

我无法复制,因为我正在使用通配符。

没有起作用:

docker cp af1f3010481a:/tmp/mydir/* .

已解决:

docker cp af1f3010481a:/tmp/mydir/myfile.txt .

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