当前位置: 首页 > 知识库问答 >
问题:

Docker-如何将文件从映像复制到主机?

岳英锐
2023-03-14

我的问题与这个关于将文件从容器复制到主机的问题有关;我有一个Dockerfile,它获取依赖项,从源代码编译构建工件,并运行一个可执行文件。我还想复制构建工件(在我的例子中,它是由'../target/'中的sbt dist生成的.zip,但我认为这个问题也适用于JAR、二进制文件等。

Docker CP用于容器,而不是图像;我是否需要启动一个容器来从其中获取一个文件?在一个脚本中,我尝试在后台以交互模式运行/bin/bash,将文件复制出去,然后杀死容器,但这似乎是Kludgey。有更好的办法吗?

另一方面,我希望避免在运行Docker save$ImageName之后,为了取出一个文件而解包.tar文件(但这似乎是目前最简单、也是最慢的选项)。

我将使用docker卷,例如:

docker run -v hostdir:out $IMAGENAME /bin/cp/../blah.zip /out

但是我在OSX中运行boot2docker,我不知道如何直接写入我的mac主机文件系统(读写卷安装在我的boot2docker VM中,这意味着我不能轻易地与其他人共享从图像中提取blah.zip的脚本。有什么想法吗?

共有1个答案

舒飞捷
2023-03-14

要从映像复制文件,请创建临时容器,从中复制文件,然后删除它:

id=$(docker create image-name)
docker cp $id:path - > local-tar-file
docker rm -v $id
 类似资料:
  • 使用时,保存的图像是独立的,因此图像的大小会变大。(~对于10个图像,大小约为9GB) 在提取docker图像后,我探索: 有没有办法有效地导出图像? 注:我已经提到了这一点。这个问题不是它的重复。它没有解决我上面提到的用例。

  • 我正在考虑使用Docker在持续集成(CI)服务器上构建我的依赖项,这样我就不必在代理本身上安装所有的运行时和库。 为了实现这一点,我需要将在容器中构建的构建构件复制回主机中。有可能吗?

  • 我要将文件夹从主机操作系统(Windows)复制到docker映像。 我的Docker文件是D:\Programs> Docker文件 复制失败:在生成上下文中找不到文件或被.dockerignore:stat test:文件不存在 我尝试了命令和 我知道发生此错误是因为我复制的路径必须相对于构建上下文(.in docker构建)。它不能是生成上下文之外的系统上的任意路径。 null 更新1 我将

  • 问题内容: 我正在尝试为我们使用的Docker容器构建备份和还原解决方案。 我已经创建了Docker基本映像,并且不想每次都使用Docker文件重建它来向其添加文件。 我想创建一个从主机运行的脚本,并使用Docker映像创建一个新容器,然后将文件复制到该容器中。 如何将文件从主机复制到容器? 问题答案: 该命令可用于复制文件。 可以将一个特定文件复制到容器中,例如: 可以从容器中复制一个特定文件,

  • 问题内容: 我正在考虑使用Docker在持续集成(CI)服务器上构建我的依赖项,这样我就不必在代理程序本身上安装所有运行时和库。 为此,我需要将容器内部构建的构建工件复制回主机。那可能吗? 问题答案: 为了将文件从容器复制到主机,可以使用以下命令 这是一个例子: 这里 goofy_roentgen 是我从以下命令获得的容器名称: 您还可以使用(部分) 容器ID 。以下命令等效于第一个

  • 问题内容: 我正在尝试将一组文件从Docker主机复制到容器。在AUFS系统上,直接进入/ var / lib / docker / aufs / …即可。但是我是另一个使用Fedora的系统,它具有devicemapper作为存储驱动程序。在这个系统上,如果我这样做: 我什么都没有。我已经尝试了将文件从主机复制到Docker容器的所有建议 使用tar似乎很棒,而不是直接转到基础FS。但是我不能假