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

如何将工件从docker构建中取出?[副本]

楚骞尧
2023-03-14

作为示例,给定下面的DockerFile,是否有方法获得文件log.log

FROM alpine:3.7 as base
RUN mkdir /log/
RUN touch /log/log.log

我尝试使用copy似乎只能从主机复制到docker映像:

FROM alpine:3.7 as base
RUN mkdir /log/
RUN touch /log/log.log
COPY ./foo.bar /log/
RUN ls -l /log/
COPY /log/log.log ./
$ touch ./foo.bar && docker build -t demo --no-cache .
Sending build context to Docker daemon  15.36kB
Step 1/6 : FROM alpine:3.7 as base
 ---> 6d1ef012b567
Step 2/6 : RUN mkdir /log/
 ---> Running in 4b6df3797ee3
Removing intermediate container 4b6df3797ee3
 ---> 827e6001d34a
Step 3/6 : RUN touch /log/log.log
 ---> Running in d93d50d61b69
Removing intermediate container d93d50d61b69
 ---> c44620d4f9c4
Step 4/6 : COPY ./foo.bar /log/
 ---> 6996718d44da
Step 5/6 : RUN ls -l /log/
 ---> Running in 84e997af182b
total 0
-rw-r--r--    1 root     root             0 Nov  8 21:44 foo.bar
-rw-r--r--    1 root     root             0 Nov  8 21:44 log.log
Removing intermediate container 84e997af182b
 ---> 5a440f258772
Step 6/6 : COPY /log/log.log ./
COPY failed: stat /var/lib/docker/tmp/docker-builder677155266/log/log.log: no such file or directory

我知道Docker Run-v(volume mount)参数,但这不是我要找的:我要了解的是,是否有一种方法可以从Docker Build过程中获取工件。

更新:re:@ChristianFosli使用docker CP的建议:该解决方案需要一个docker容器。但是,在我的例子中,我希望在Docker Build过程中提取文件的原因是,我的DockerFile运行的可执行文件失败了,因此我没有可以作为容器运行的映像,可以在该容器上执行Docker CP。即。我想要从Docker Build进程中提取的文件是一个元数据文件,它包含关于故障的调试信息,我想要检查这些信息。

共有1个答案

梁明辉
2023-03-14

您可以使用Docker CP将文件从容器复制到本地文件系统

查看单据了解详细情况

我不知道直接从docker映像复制文件的方法,但您可以使用docker create创建一个基于映像的容器,而不运行它,然后使用docker CP从它复制文件。

 类似资料:
  • 我有一个Jenkins(我是新手)系统,它有一些限制: 主/从排列 从服务器是Windows 7 安装插件可能会遇到很大阻力 生成将存档到Windows共享 我正在使用构建后步骤将二进制文件推送到存档服务器,但我还没有找到一种方法来安排构建日志也在那里结束。我发现控制台输出可以在http://jenkins/job/$jobtitle/$buildnumber/consoletext上获得,但我不

  • 有没有一种方法可以使用Groovy后期构建插件读取构建工件文件? 一些上下文:我已经编写了一些由Jenkins的maven运行的testng测试。Jenkins运行测试,给我测试结果等。但是,我被要求将结果存储在HP的应用程序生命周期管理(ALM)中。一位同事为我提供了一个构建后的groovy脚本,它可以与ALM接口并存储测试结果。我必须将这些参数传递给该脚本: 作业名称 通过/失败状态 测试开始

  • 我正在尝试将一个文件从本地复制到中的namenode目录中。我尝试了以下命令:,但当我访问namenode bash中的目录时,该文件不存在

  • 这里的答案似乎不起作用。这里的答案也不适用。我怀疑从那以后Docker的构建引擎发生了一些变化。 我的Dockerfile: 这将生成以下输出: 添加--progress plain会产生稍微不同的输出,但不是我想要的,例如: 在20.10.3版本的构建过程中,我如何获得目录列表?我可以执行到正在运行的容器中,但这需要做更多的工作。

  • 我有两个jenkins作业,第一个作业向artifactory发布一个jar文件,并向工件添加一个属性(提交id)。第二个作业总是从artifactory中提取最新版本的jar,但它还需要与该工件关联的属性。我们正在使用gradle进行构建。有没有办法进入gradle或者我们有其他选择吗? 编辑:作业不是管道的一部分。这意味着它们是独立的作业,第二个作业触发另一个存储库更改。

  • 问题内容: 我正在将SourceForge用于某些开放源代码项目,并且希望将发布的部署自动部署到SourceForge文件发布系统。我使用Maven进行构建,除非您进行一些手动准备工作,否则标准的SFTP部署机制似乎无法正常工作。我在其他论坛上遇到过一些老帖子,建议唯一的方法是专门为SourceForge编写Wagon。 最近有人对此有经验吗? 问题答案: 我无法通过测试来确认,但我相信无需编写任