如何正确使用docker cp?

ghhkc1vu  于 2023-04-29  发布在  Docker
关注(0)|答案(4)|浏览(142)

我正在尝试将文件从主机复制到容器。我已经检查了许多线程,但这些都不适合我。
文件名,我正在尝试复制:ex.txt
容器文件夹需要的位置:我的文件夹

user:~$ docker exec -it my_container bash
a5b13d9a55fd:~S ls
my_folder

到目前为止我所尝试的:

user:~$ docker cp ex.txt my_container:/my_folder/
no such directory

user:~$ docker cp ex.txt my_container:/my_folder/ex.txt
Error response from daemon: lstat /var/lib/docker/aufs/mnt/f7796d886aa3673be37b1d346190b7d6ba0ed64edf83bf62bff325f87eaec5eb/my_folder: no such file or directory

请告诉我哪里缺少代码?

icomxhvb

icomxhvb1#

编辑:由于图像似乎使用无根使用r,您可以尝试以下操作:

docker cp ex.txt my_container:$HOME/my_folder/ex.txt

您应该确保my_folder已经在容器中,以确保首先运行以下命令:

docker exec my_container_name mkdir -p $HOME/my_folder
jogvjijk

jogvjijk2#

请仔细阅读offical文档。
查看this
在你的情况下,这应该起作用。

docker cp ex.txt my_container:/my_folder/

更新-1:

在你的例子中,我怀疑/my_folder不存在于容器中,这是错误的说法。
同时引用official文档中提到的行。
如果DEST_PATH不存在,docker cp不会为DEST_PATH创建父目录。
所以/my_folder目录不会自动创建。
执行此操作。docker exec -it my_container mkdir /my_folder,然后运行docker cp命令。

更新-2:

如果什么都不起作用,那么请尝试这个,它对我很有效。

$ cat /root/ex.txt
abc
$ docker run -itd alpine sh
Unable to find image 'alpine:latest' locally
latest: Pulling from library/alpine
921b31ab772b: Pull complete
Digest: sha256:ca1c944a4f8486a153024d9965aafbe24f5723c1d5c02f4964c045a16d19dc54
Status: Downloaded newer image for alpine:latest
35ad53b81c30f675b28a53e6a266f039cf49e90705d41e499deb4f17ab900255
$
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
35ad53b81c30        alpine              "sh"                3 seconds ago       Up 2 seconds                            mystifying_babbage
$
$ docker exec -it 35ad53b81c30 sh
/ # ls
bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var
/ # mkdir /my_folder
$
$ docker cp /root/ex.txt mystifying_babbage:/my_folder/
$
$ docker exec -it 35ad53b81c30 sh
/ # ls /my_folder/
ex.txt
/ # cat /my_folder/ex.txt
abc
/ #

希望这能帮上忙。

cpjpxq1n

cpjpxq1n3#

确保容器名称中没有拼写错误,否则同样的错误也会出现

rjjhvcjd

rjjhvcjd4#

我在Windows上遇到了同样的问题,问题是docker cp似乎不支持尾随\,例如:

docker cp toto.txt my_container:C:\MyFolderThatExitsOnContainer

不起作用,但是:

docker cp toto.txt my_container:C:\MyFolderThatExitsOnContainer\

错误是no such directory
我假设在Linux上使用/可能存在相同的问题。

相关问题