docker 构建日志与我习惯的不同



在执行docker built -t sometag .时,我总是有关于创建docker映像所涉及的步骤的详细日志。特别是中间图像。像这样:

Sending build context to Docker daemon  3.072kB
Step 1/3 : FROM python:3.8-slim-buster
---> 3d8f801fc3db
Step 2/3 : COPY build.sh .
---> 541b65a7b417
Step 3/3 : RUN ./build.sh
---> Running in 9917e3865f96
.........

现在,突然之间,我开始有一个不同的日志结构。这样的:

=> [internal] load build definition from Dockerfile               0.0s
=> => transferring dockerfile: 761B                               0.0s
=> [internal] load .dockerignore                                  0.0s 
=> => transferring context: 34B                                   0.0s 
=> [internal] load metadata for docker.io/library/alpine:latest   0.6s 
=> [internal] load build context                                  0.0s 
=> => transferring context: 757B                                  0.0s 
=> [1/4] FROM docker.io/library/alpine:latest@sha256:d9a7354e3845ea8466bb00b22224d9116b183e594527fb5b6c  0.0s 
=> CACHED [2/4] WORKDIR /src                                      0.0s
...................

这让我很困惑。特别是缺少中间图像id,因为我使用它们进行调试。

如何恢复以前的日志结构或获取中间图像id ?

PS: Docker version 20.10.2, build 2291f61在windows 10.

看起来你现在正在使用BuildKit。您可能已经设置了环境变量DOCKER_BUILDKIT=1(?)。

在没有BuildKit的情况下构建(并获得你习惯的日志):

DOCKER_BUILDKIT=0 docker build -t sometag .

现在,请注意,BuildKit提供了许多优于经典构建器的增强。所以我个人会尝试去适应新的日志输出。

虽然您可以在单次运行时禁用它(DISABLE_BUILDKIT=0环境变量),但通过使用Docker特性标志使其更持久可能更实际。

打开Docker设置,导航到Docker引擎,你会看到这样的内容。真正修改,并保存

{
"registry-mirrors": [],
"insecure-registries": [],
"debug": false,
"experimental": false,
"features": {
"buildkit": true  <<  change this to  false !
}
}

参见https://docs.docker.com/develop/develop-images/build_enhancements/

最新更新