从主机到容器的docker cp无法正常工作

时间:2016-06-20 15:57:25

标签: docker copy

我是docker概念的新手,并试图将一些文件从我的主机复制到容器中。假设我运行以下代码时我的docker名称是my_docker:

docker cp my_docker:/usr/local/src/test.txt test.txt

它将test.txt文件从我的容器复制到本地主机。但是反过来这样做是行不通的。这是命令:

docker cp test.txt my_docker:/usr/local/src

我正在做些什么吗?任何帮助将非常感激。

由于

2 个答案:

答案 0 :(得分:1)

在评论中提到的ahajib,您正在查找在不同容器中复制的文件。

$ docker run --name my_container alpine
$ docker cp test.txt my_container:/tmp/test.txt
$ docker run alpine ls -l /tmp
total 0
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                          PORTS               NAMES
6224c947fbbd        alpine              "ls -l /tmp"        11 seconds ago       Exited (0) 10 seconds ago                           brave_neumann
22951689a3e4        alpine              "/bin/sh"           About a minute ago   Exited (0) About a minute ago                       my_container

您已将文件复制到my_container,但您在ls -l /tmp中运行了brave_neumann命令。

如果要将文件复制到容器中,然后在容器中使用这些文件,则必须在容器仍在运行时复制文件,或者将文件复制到docker卷。 将该卷安装在新容器中,然后让它看到您复制的文件。

$ docker volume create my_volume
my_volume
$ docker run --name my_container2 -v my_volume:/data alpine echo OK
OK
$ docker cp test.txt my_container2:/data/test.txt
$ docker run -v my_volume:/data alpine ls -l /data
total 4
-rw-r--r--    1 1006     1006            29 Oct  6 19:43 test.txt
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
15b36ccd535f        alpine              "ls -l /data"       7 seconds ago       Exited (0) 6 seconds ago                        agitated_khorana
b9d4c9e0902f        alpine              "echo OK"           54 seconds ago      Exited (0) 53 seconds ago                       my_container2
6224c947fbbd        alpine              "ls -l /tmp"        2 minutes ago       Exited (0) 2 minutes ago                        brave_neumann
22951689a3e4        alpine              "/bin/sh"           3 minutes ago       Exited (0) 3 minutes ago                        my_container
$ 

答案 1 :(得分:0)

在第二个命令中,您似乎试图将test.txt复制到名为src的/ usr / local中。尝试在目标路径的末尾添加/: docker cp test.txt my_docker:/usr/local/src/ 使用文件名或docker cp test.txt my_docker:/usr/local/src/newname.txt进行复制,以便在容器中重命名。