gpt4 book ai didi

docker - 如何从 docker build 中获取工件?

转载 作者:行者123 更新时间:2023-12-03 17:10:17 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Docker copy file to host from within dockerfile

(3 个回答)


11 个月前关闭。




有没有办法从 docker build 获取文物输出到主机?
例如,给定以下 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

我知道 -v (卷安装)参数 docker run - 但这不是我要找的:我想知道是否有办法从 docker build 中获取文物具体处理。

更新:回复:@ChristianFosli 建议使用 docker cp :该解决方案需要一个 docker 容器。但是,就我而言,我希望在 docker build 期间专门提取文件的原因过程是我的 Dockerfile运行一个失败的可执行文件,因此我没有可以作为容器运行的图像,我可以在其上执行 docker cp . IE。我想从 docker build 中提取的文件process 是一个元数据文件,其中包含我想检查的有关故障的调试信息。

最佳答案

您可以使用 docker cp 将文件从容器复制到本地文件系统.
Check the docs for details
我不知道有什么方法可以直接从 docker 镜像中复制文件,但是您可以使用 docker create 基于您的镜像创建一个容器,而无需运行它。 ,然后使用 docker cp 从中复制文件.

关于docker - 如何从 docker build 中获取工件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64743398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com