Pixel Pedals of Tomakomai

北海道苫小牧市出身の初老の日常

docker historyがmissingになる

ふと、 docker build をして docker history を実行したら、中間イメージが <missing> と表示されていて、あれ?となった。

$ docker history 790538589d39
IMAGE          CREATED         CREATED BY                                      SIZE      COMMENT
790538589d39   2 minutes ago   CMD ["python" "-c" "print(\"OKay\")"]           0B        buildkit.dockerfile.v0
<missing>      2 minutes ago   RUN pip install -e . # buildkit                 9.41MB    buildkit.dockerfile.v0
<missing>      2 minutes ago   COPY . /python # buildkit                       751kB     buildkit.dockerfile.v0
<missing>      2 minutes ago   WORKDIR /python                                 0B        buildkit.dockerfile.v0
<missing>      2 weeks ago     /bin/sh -c #(nop)  CMD ["python3"]              0B
..snip..

全く意識していなかったのだが、そもそも docker image が中間イメージを親に持つという構成は、 1.10 のバージョンですでに終わっていたようだ。

www.windsock.io

Since Docker v1.10, generally, images and layers are no longer synonymous.

ただ、これは 2016 年の話でちょっと古過ぎるし、よく読むと、

Locally Built Images However, when a layer is committed during an image build on a local Docker host, an 'intermediate' image is created at the same time.

と書いてあって、ローカルでビルドするときちんと中間イメージができると書いてある。

そもそも buildkit.dockerfile.v0 が気になるのだが、これが以下に書いてある。

docs.docker.com

ビルド方法が今までと変わるようで、実際、 DOCKER_BUILDKIT=0 で実行してみると、きちんと(?)中間イメージができた。

$ docker history 47c06ac6f6e0
IMAGE          CREATED          CREATED BY                                      SIZE      COMMENT
47c06ac6f6e0   27 seconds ago   /bin/sh -c #(nop)  CMD ["python" "-c" "print…   0B
d548a2aa34a6   27 seconds ago   pip install -e .                                9.41MB
e6e7465a2860   31 seconds ago   /bin/sh -c #(nop) COPY dir:8a8c73a0932d1c9e7…   751kB
f1e6d23f61f3   31 seconds ago   /bin/sh -c #(nop) WORKDIR /python               0B
a5d7930b60cc   2 weeks ago      /bin/sh -c #(nop)  CMD ["python3"]              0B
<missing>      2 weeks ago      /bin/sh -c set -ex;   wget -O get-pip.py "$P…   8.31MB
..snip..

この機能は 2018 年からある機能なので、なぜ突然有効になったのかは疑問が残るところである(まだ調べてないが風呂の時間なので、わかったら追記する)。