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

docker build logs are different from what I'm used to

在执行 docker built -t sometag . 时,我总是会详细记录创建 docker 图像所涉及的步骤。特别是中间图像 ID。类似的东西:

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 版本 20.10.2,在 windows 10.

上构建 2291f61

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

在没有 BuildKit 的情况下构建(并取回您习惯的日志):

DOCKER_BUILDKIT=0 docker build -t sometag .

现在,请注意,BuildKit 提供了比经典构建器更多的增强功能。所以就我个人而言,我会尝试适应新的日志输出。

尽管您可以为单个 运行(DISABLE_BUILDKIT=0 环境变量)禁用它,但通过使用 Docker 功能标志来使其更永久可能更实用。

打开 Docker 设置,导航到 Docker 引擎,您会看到类似这样的内容。修改truefalse,保存

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

查看更多信息 https://docs.docker.com/develop/develop-images/build_enhancements/