如何从 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
在构建期间,我想从图像(从文件夹 /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