如何从 docker 图像复制文件 - dockerfile cmd

How to copy files from a docker image - dockerfile cmd

在构建期间,我想从图像(从文件夹 /opt/myApp/myFile.xml)复制一个文件到我的主机文件夹 /opt/temp 在 Dockerfile 中,我使用 --mount 如下,试图挂载到我的本地测试文件夹:

RUN --mount=target=/opt/temp,type=bind,source=test cp /opt/myApp/myFile.xml /opt/temp

我正在成功构建图像,但是本地 test 文件夹是空的 有什么想法吗?

不支持将文件从映像复制到位于 build-time 的主机。
这可以在 run-time 使用卷期间轻松实现。

但是,如果你真的想work-around这个,你可以看看custom build outputs documentation,它引入了对这种activity的支持。

这是一个受官方文档启发的简单示例:

Dockerfile

FROM alpine AS stage-a
RUN mkdir -p /opt/temp/
RUN touch /opt/temp/file-created-at-build-time
RUN echo "Content added at build-time" > /opt/temp/file-created-at-build-time

FROM scratch as custom-exporter
COPY --from=stage-a /opt/temp/file-created-at-build-time .

为此,您需要使用以下参数启动构建命令:

DOCKER_BUILDKIT=1 docker build --output out .

这将在您的主机上创建一个目录 out,其中包含您需要的文件:

.
├── Dockerfile
└── out
    └── file-created-at-build-time
cat out/file-created-at-build-time 
Content added at build-time