【问题标题】:docker cp - "Error response from daemon: not a directory"docker cp - “来自守护进程的错误响应:不是目录”
【发布时间】:2017-07-13 19:54:05
【问题描述】:

我正在尝试使用以下命令将文件从 docker 复制到主机,

docker cp <container_name>:<file FQN> ./

但出现以下错误,

来自守护进程的错误响应:不是目录

经验证,文件名和容器名是有效的。 注意:在 Mac 中使用 Docker

【问题讨论】:

    标签: docker


    【解决方案1】:

    感谢您的所有回答。经过一番挣扎,发现错误消息实际上与docker cp 命令没有直接关系。

    场景是,我运行带有本地文件链接的 docker。当 docker 运行时,我将其删除。然后该文件以某种方式创建为文件夹(可能是当我重新启动泊坞窗时)。

    每当我执行一些命令时,码头工人都会给我那个错误。然后,一旦我创建了文件,错误就消失了。

    【讨论】:

    • +1 - 在我的例子中,我使用 docker-compose 和通过卷映射的主机文件。删除主机系统中的文件似乎会导致 docker cp 在主机系统上的位置(同名)创建一个文件夹,然后抛出错误。删除目录并触摸主机上的文件恢复了映射,修复了错误,让我再次取出文件。谢谢!
    【解决方案2】:

    看来你的命令是正确的。您请从您的本地机器而不是从容器内部尝试如下操作。有时不幸的是,如果我们在容器中运行这个命令,我们会得到这种错误。

    docker cp [container_name]:[docker dir abs path] [host dir path]

    希望对你有所帮助。

    【讨论】:

      【解决方案3】:

      这是一个关于如何复制文件的完整示例:

      $ 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:~$ 
      

      请按照这些说明进行操作,确保文件路径中没有错字,否则会出现可重现的错误。

      【讨论】:

        【解决方案4】:

        尝试复制容器中实际上是卷的文件时也会出现此错误,但该文件已在主机上删除。

        【讨论】:

          【解决方案5】:

          这只是您要复制的路径中的错误。 你可能不相信,但确实如此。

          【讨论】:

            猜你喜欢
            • 2017-04-25
            • 1970-01-01
            • 1970-01-01
            • 2015-05-21
            • 2016-12-20
            • 1970-01-01
            • 1970-01-01
            • 2017-05-16
            • 1970-01-01
            相关资源
            最近更新 更多