ふと、 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 のバージョンですでに終わっていたようだ。
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
が気になるのだが、これが以下に書いてある。
ビルド方法が今までと変わるようで、実際、 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 年からある機能なので、なぜ突然有効になったのかは疑問が残るところである(まだ調べてないが風呂の時間なので、わかったら追記する)。