我正在编写Dockerfile
来构建应用程序。我知道您可以使用
docker cp <containerId>:/file/path/within/container /host/path/target
(见Copying files from Docker container to host),但我想运行
docker build
并将我的Dockerfile
创建的构建工件转储到我的主机文件系统上。
我是否可以在Dockerfile中使用命令将容器复制到主机中?与COPY
相反?
答案 0 :(得分:1)
根据Docker文档,添加了API版本1.40
针对您的需求:
默认情况下,将从生成结果中创建本地容器映像。 --output(或-o)标志可让您覆盖此行为,并且 指定一个自定义导出器。例如,自定义导出器允许您 将构建工件导出为本地文件系统上的文件,而不是 Docker映像,这对于生成本地二进制文件很有用, 代码生成等。
例如
Definition Id_sym'' {A: Type} {x y: A}: Id A x y -> Id A y x :=
let P := (fun y' _ => Id A y' x) in
Id_ind A x P (refl A x) y.
具有多级$ docker build --output type=tar,dest=out.tar .
Dockerfile
--output选项可导出目标阶段中的所有文件。普通的 仅导出特定文件的模式是进行多阶段构建 并使用COPY --from将所需文件复制到新的暂存阶段。
答案 1 :(得分:0)
也许此命令就是您要搜索的
docker run -v ~/data:/var/logs <image>
-v ~/data:/var/logs
创建一个绑定安装卷,该绑定安装卷将容器中的/var/logs
目录从容器链接到主机上的~/data
v目录。 Docker使用:将主机路径与容器路径分开。
答案 2 :(得分:0)
除了@Marakai出色的答案外,还必须设置环境变量DOCKER_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 .
文件将被复制到目录中。