docker build 输出的目的是啥?

Posted

技术标签:

【中文标题】docker build 输出的目的是啥?【英文标题】:Whati is the purpose of docker build output?docker build 输出的目的是什么? 【发布时间】:2020-05-06 12:34:56 【问题描述】:

用途和使用方法:

docker build --output

Description from Docker reference

--output , -o API 1.40+ 输出目的地(格式:type=local,dest=path)

提问原因:

我使用 docker 作为构建引擎,我希望找到在docker build 期间或之后导出文件或变量的一些原因。有帮助吗?

【问题讨论】:

【参考方案1】:

--output 标志用于设置buildkit 图像生成器的输出配置。 buildkit 可从 docker 18.09 版本获得。您目前需要使用环境变量DOCKER_BUILDKIT=1 来使用buildkit。

buildkit 本身支持构建输出到不同的目的地,例如docker image or local directory or as docker tar ball or oci format tar ball。但是使用docker cli 工具,看起来您只能将构建输出导出到本地目录。

语法

--output type=local,dest=path/to/output-dir

示例

root@vm1:~/cc# DOCKER_BUILDKIT=1 docker build -o type=local,dest=/root/cc/out .
[+] Building 0.5s (5/5) FINISHED
 => [internal] load .dockerignore                                                                                                     0.0s
 => => transferring context: 2B                                                                                                       0.0s
 => [internal] load build definition from Dockerfile                                                                                  0.0s
 => => transferring dockerfile: 49B                                                                                                   0.0s
 => [internal] load metadata for docker.io/library/ubuntu:latest                                                                      0.0s
 => [1/1] FROM docker.io/library/ubuntu                                                                                               0.0s
 => => resolve docker.io/library/ubuntu:latest                                                                                        0.0s
 => exporting to client                                                                                                               0.5s
 => => copying files 64.40MB

# cd /root/cc/out
# ls -lrt
total 76
drwxr-xr-x  2 root root 4096 Apr 24  2018 sys
drwxr-xr-x  2 root root 4096 Apr 24  2018 proc
drwxr-xr-x  2 root root 4096 Apr 24  2018 home
drwxr-xr-x  2 root root 4096 Apr 24  2018 boot
drwxr-xr-x  2 root root 4096 Jan 12 13:09 srv
drwxr-xr-x  2 root root 4096 Jan 12 13:09 opt
drwxr-xr-x  2 root root 4096 Jan 12 13:09 mnt
drwxr-xr-x  2 root root 4096 Jan 12 13:09 media
drwxrwxrwt  2 root root 4096 Jan 12 13:10 tmp
drwxr-xr-x  2 root root 4096 Jan 12 13:10 dev
drwxr-xr-x  2 root root 4096 Jan 20 07:33 bin
drwxr-xr-x 29 root root 4096 Jan 20 07:33 etc
drwxr-xr-x  8 root root 4096 Jan 20 07:33 lib
drwxr-xr-x  5 root root 4096 Jan 20 07:33 run
drwx------  2 root root 4096 Jan 20 07:33 root
drwxr-xr-x  2 root root 4096 Jan 20 07:33 lib64
drwxr-xr-x  2 root root 4096 Jan 20 07:33 sbin
drwxr-xr-x 10 root root 4096 Jan 20 07:33 usr
drwxr-xr-x 11 root root 4096 Jan 20 07:33 var
root@vm1:~/cc/out#

【讨论】:

感谢您的解释,那么是否可以同时构建镜像以上传到 docker 注册表并将其导出到本地路径以访问构建工件? @JacekStyrylski 我需要做同样的事情。你解决了吗? 您是否检查过docker save 是否对您的目的有用? @heniostraszny 您可以将两个输出作为两个单独的构建命令进行。 Docker 将缓存构建,因此第二个命令几乎是即时的。

以上是关于docker build 输出的目的是啥?的主要内容,如果未能解决你的问题,请参考以下文章

CentOS Docker 映像的目的是啥? [复制]

“docker exec”命令的“-i”和“-t”选项的目的是啥?

“rawproto”文件的目的是啥?

Java 流中 flush() 的目的是啥?

_chkstk() 函数的目的是啥?

频域分析的目的是啥