我是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
我正在做些什么吗?任何帮助将非常感激。
由于
答案 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
进行复制,以便在容器中重命名。