无法将文件从Docker容器复制到主机

Mah*_*sem 3 containers copy docker

$ docker cp maven-container_:xxxx.war/home/wissem/Documents/docker-stage/wildfly-configured/target /

来自守护进程的错误响应:lstat/var/lib/docker/aufs/mnt/afbdc7f4ce3165fb2e6c34929841b9fa911de1978887dd5b9b0804e4f624af2d /xxxx.war:没有这样的文件或目录

错误:作业失败:退出状态1

Tar*_*ani 8

您需要从正在运行的实例而不是图像进行复制.所以我假设maven-container_是你发布的容器的名称,而不是图像.之后使用完整路径:,

docker cp maven-container_:/path/inside/container/xxxx.war /home/wissem/Documents/docker-stage/wildfly-configured/targe??t/
Run Code Online (Sandbox Code Playgroud)

  • 从图像复制而不运行它 - 创建一个具有名称的容器。docker 创建 my_image_tag --name my_cont_name; docker cp my_cont_name:/路径/文件/home/... (3认同)
  • 不需要运行 (2认同)

uth*_*mas 5

对我来说,由于权限,它不起作用。我试图复制的文件归 postgres 用户所有,而默认用户似乎是 root。


ash*_*bar 5

尝试复制根文件夹下的文件时出现此错误(似乎与@uthomas 的回答有关)。

$ docker cp dreamy_brown:/root/myfile.txt ~
Error: No such container:path: dreamy_brown:/root/myfile.txt
Run Code Online (Sandbox Code Playgroud)

解决方案:从容器内,我首先将文件移动到文件/tmp夹:

$ mv /root/myfile.txt /tmp
Run Code Online (Sandbox Code Playgroud)

然后我就可以将它复制到主机:

$ docker cp dreamy_brown:/tmp/myfile.txt ~
Run Code Online (Sandbox Code Playgroud)