我正在尝试使用以下命令将文件从docker复制到主机
docker cp <container_name>:<file FQN> ./
但是得到以下错误,
来自守护程序的错误响应:不是目录
经过验证,文件名和容器名称有效。 注意:在Mac中使用Docker
答案 0 :(得分:3)
感谢所有答案。经过一番斗争后发现错误消息实际上与docker cp
命令没有直接关系。
情节是,我使用指向本地文件的链接运行了docker。当docker运行时我删除了它。然后文件以某种方式创建为文件夹(可能,当我重新启动docker时)。
每当我执行某个命令时,docker就会给我这个错误。然后,一旦我创建了文件,错误就消失了。
答案 1 :(得分:1)
以下是有关如何复制文件的完整示例:
$ docker run -it ubuntu /bin/bash
root@9fc8a1af7f23:/#
root@9fc8a1af7f23:/# ll
total 72
drwxr-xr-x 34 root root 4096 Jul 13 21:51 ./
drwxr-xr-x 34 root root 4096 Jul 13 21:51 ../
-rwxr-xr-x 1 root root 0 Jul 13 21:51 .dockerenv*
drwxr-xr-x 2 root root 4096 Feb 14 23:29 bin/
drwxr-xr-x 2 root root 4096 Apr 12 2016 boot/
drwxr-xr-x 5 root root 360 Jul 13 21:51 dev/
drwxr-xr-x 45 root root 4096 Jul 13 21:51 etc/
drwxr-xr-x 2 root root 4096 Apr 12 2016 home/
drwxr-xr-x 8 root root 4096 Sep 13 2015 lib/
drwxr-xr-x 2 root root 4096 Feb 14 23:29 lib64/
drwxr-xr-x 2 root root 4096 Feb 14 23:28 media/
drwxr-xr-x 2 root root 4096 Feb 14 23:28 mnt/
drwxr-xr-x 2 root root 4096 Feb 14 23:28 opt/
dr-xr-xr-x 288 root root 0 Jul 13 21:51 proc/
drwx------ 2 root root 4096 Feb 14 23:29 root/
drwxr-xr-x 6 root root 4096 Feb 27 19:41 run/
drwxr-xr-x 2 root root 4096 Feb 27 19:41 sbin/
drwxr-xr-x 2 root root 4096 Feb 14 23:28 srv/
dr-xr-xr-x 13 root root 0 Jul 13 21:51 sys/
drwxrwxrwt 2 root root 4096 Feb 14 23:29 tmp/
drwxr-xr-x 11 root root 4096 Feb 27 19:41 usr/
drwxr-xr-x 13 root root 4096 Feb 27 19:41 var/
root@9fc8a1af7f23:/# cd tmp/
root@9fc8a1af7f23:/tmp# ls
root@9fc8a1af7f23:/tmp# echo "hello docker" > docker_test.txt
root@9fc8a1af7f23:/tmp# cat docker_test.txt
hello docker
root@9fc8a1af7f23:/tmp#
然后,在另一个终端
dali@dali-X550JK:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9fc8a1af7f23 ubuntu "/bin/bash" 2 minutes ago Up 2 minutes fervent_hodgkin
dali@dali-X550JK:~$ docker cp fervent_hodgkin:/tmp/docker_test.txt /tmp/
dali@dali-X550JK:~$ cat /tmp/docker_test.txt
hello docker
dali@dali-X550JK:~$
请按照这些说明操作,确保您的文件路径中没有拼写错误,否则会分享可重现的错误。
答案 2 :(得分:0)
看来你的命令是正确的。您可以从本地机器尝试以下内容,而不是从容器内部尝试。有时不幸的是,如果我们在容器中运行此命令,我们将会遇到这种错误。
docker cp [container_name]:[docker dir abs path] [host dir path]
希望它会对你有所帮助。
答案 3 :(得分:0)
这只是您要复制的路径中的错误。 你可能不相信,但确实如此。
答案 4 :(得分:0)
当尝试复制实际上是容器中的卷但文件已在主机上删除时,也会出现此错误。