我正在编写一个Dockerfile来构建一个应用程序。我知道你可以用
docker cp <containerId>:/file/path/within/container /host/path/target
(请参阅将文件从Docker容器复制到主机),但我想只运行
docker build
并让它将我的Dockerfile
创建的构建工件转储到我的主机文件系统的某个地方。
Dockerfile中是否有可以用于从容器复制到主机的命令?与复制相反?
也许这个命令就是你要搜索的
docker run -v ~/data:/var/logs <image>
创建一个绑定装载卷,将容器中的目录链接到主机上的数据目录。Docker使用:将主机路径与容器路径分离。
我推荐这篇关于如何在Docker容器之间共享数据的文章
除了@Marakai极好的答案外,还必须将env变量DOCKER\u BUILDKIT设置为1。所以命令是:
$ DOCKER_BUILDKIT=1 docker build --output type=tar,dest=out.tar .
或者一个可以分成两个命令:
$ export DOCKER_BUILDKIT=1
$ docker build --output type=tar,dest=out.tar . # to gen into a tar file
或者保存文件而不形成tar文件:
$ mkdir out
$ docker build --output out .
文件将被复制到目录中。
根据Docker docs,增加了API版本1.40
自定义生成输出
这是为了满足您的需求:
默认情况下,将根据生成结果创建本地容器映像。-output(或-o)标志允许您重写此行为,并指定自定义导出器。例如,自定义导出器允许您将构建工件导出为本地文件系统上的文件,而不是Docker映像,这对于生成本地二进制文件、代码生成等非常有用。
比如说
$ docker build --output type=tar,dest=out.tar .
使用多级Dockerfile
FROM golang AS build-stage
RUN go get -u github.com/LK4D4/vndr
FROM scratch AS export-stage
COPY --from=build-stage /go/bin/vndr /
-output选项从目标阶段导出所有文件。仅导出特定文件的一种常见模式是执行多阶段构建,并使用copy-from将所需文件复制到新的暂存阶段。
我正在编写来构建应用程序。我知道您可以使用 (请参见将文件从Docker容器复制到主机),但我只想运行 在Dockerfile中是否有一个命令可以用于从容器中复制到主机中?像的反义词吗?
我正在使用docker容器来编译一段代码,我不一定要将其docker化。我已使用必要的构建工具设置了一个映像,但我希望以某种方式将编译后的文件从容器中取出,而无需使用docker cp container:/file host/file命令。换句话说,我希望自动化这个过程,以便在构建完成后,将生成的文件复制到主机。 Dockerfile
问题内容: dockerfile成功构建后,我想获取一些文件,但它不会将文件从容器复制到主机。 这意味着当我构建了dockerfile时,这些文件已经被托管。 问题答案: 不 支持将文件“从Dockerfile”复制到主机。Dockerfile只是指定如何构建映像的配方。 构建时,您可以将文件从主机复制到要构建的映像(使用或指令) 您还可以使用docker cp将文件从 容器 (已为‘d 的映像)
我想在dockerfile成功构建时获取一些文件,但它不将文件从容器复制到主机。 这意味着当我构建dockerfile时,文件已经是主机了。
我正在考虑使用Docker在持续集成(CI)服务器上构建我的依赖项,这样我就不必在代理本身上安装所有的运行时和库。 为了实现这一点,我需要将在容器中构建的构建构件复制回主机中。有可能吗?