Docker cp未指定路径

时间:2016-02-24 10:19:36

标签: docker copy

我尝试将文件夹复制到我的容器但不能正常工作。如果我试试

sudo docker cp 4aefd670e41f:/var/www/html/web2015 /home/desarrollo3/proyectos/web2015 

文件夹web2015复制正确,但我需要复制容器中的文件夹。

工作正常

sudo docker cp 4aefd670e41f:/var/www/html/web2015 /home/desarrollo3/proyectos/web2015

不工作

sudo docker cp /home/desarrollo3/proyectos/web2015 4aefd670e41f:/var/www/html/web2015

有条件的信息Docker

Client version: 1.6.2
Client API version: 1.18
Go version (client): go1.3.3
Git commit (client): 7c8fca2
OS/Arch (client): linux/amd64
Server version: 1.6.2
Server API version: 1.18
Go version (server): go1.3.3
Git commit (server): 7c8fca2
OS/Arch (server): linux/amd64

我是Ubuntu 15

错误FATA [0000]错误:路径未指定

sudo docker cp /home/desarrollo3/proyectos/web2015 4aefd670e41f:/var/www/html/web2015

如果我写这篇文章,我不会收到错误但不会复制任何内容:

sudo docker cp ./folder:web2015 4aefd670e41f:/var/www/html/

2 个答案:

答案 0 :(得分:6)

如果是您需要复制的文件夹,请确保SRC_PATH/结尾(考虑到容器上的DEST_PATH已存在)

sudo docker cp /home/desarrollo3/proyectos/web2015/ 4aefd670e41f:/var/www/html/web2015

docker cp提及:

  

SRC_PATH/结尾。

     

将源目录的内容复制到此目录中。

issue 13171所示,在docker 1.8.0(commit 5e86b81)中修复了错误消息“Error:Path not specified”。
Docker 1.6.2太旧了。

答案 1 :(得分:1)

在较旧的docker中,您无法使用“ docker cp”复制到容器。如果出于任何原因迫切需要这样做:

docker exec container touch /myfile
sudo find /var/lib/docker -iname myfile

这将向您显示容器文件系统所在的位置。通常只需在此处cp您的文件即可。

sudo cp -r /myfiles/webapp /var/lib/docker/aufs/mnt/019283091823081027401720473a2c7ff637a6f09edab6/var/www/localhost/htdocs

我不确定为什么Docker并未正式实际执行此操作,但是我怀疑每一层上都有一些校验和,因此,如果您在另一个Dockerfile中重用该映像,则可能无法正常工作。但是它至少应该在容器的整个生命周期内都起作用,因此您可以执行所需的操作。

希望对您有所帮助,包括尽快更新或更换此服务器。