Homebrew + Colima + Docker 環境で docker build --check したい

2024/12/26に公開1

はじめに

Docker Desktop のライセンス問題をトリガーに約2年前から表題の Colima を長く愛用しています。

colima かわいいよ colima

https://x.com/gabu/status/1604630523787513856

話は変わって、少し前から GitHub で PR を見ている時に変更していない Dcokerfile に対してこんな Warning が表示されるようになりました。Preview と書いてあるので何か実験的にはじまったのでしょう。

これを修正したいなーと思い調べると docker build --check で各ルールのチェックができるようです。

https://docs.docker.com/reference/build-checks/

早速、手元で実行してみると。

$ docker build --check .
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
            Install the buildx component to build images with BuildKit:
            https://docs.docker.com/go/buildx/

unknown flag: --check

unknown flag と言われるし、そもそも legacy だと言われました。buildx をインストールする必要があるみたいです。

恥ずかしながら buildx の存在をこれを機に知りました😅

Buildx インストール

公式ドキュメントでは Docker Desktop にバンドルされているからと Docker Desktop のインストールが案内されていますが、前述のとおり Colima 環境に Buildx だけインストールしたいので調べるとなんと Homebrew でいけるじゃないですか!

https://formulae.brew.sh/formula/docker-buildx

$ brew install docker-buildx
docker-buildx is a Docker plugin. For Docker to find the plugin, add "cliPluginsExtraDirs" to ~/.docker/config.json:
  "cliPluginsExtraDirs": [
      "/opt/homebrew/lib/docker/cli-plugins"
  ]

とのことなので ~/.docker/config.json に追記します。

ちなみに追記する前に実行すると。

$ docker buildx
docker: 'buildx' is not a docker command.

追記後は。

$ docker buildx
Extended build capabilities with BuildKit

Usage:  docker buildx [OPTIONS] COMMAND

ででーん🎉

他の方法でインストールしている方は docker build でも buildx が使われるようにもうひと手間必要みたいですが、この方法では手順としては以上になります。

docker build --check

$ docker build --check .
[+] Building 8.3s (7/7) FINISHED

# 中略

Check complete, 14 warnings have been found!

WARNING: FromAsCasing - https://docs.docker.com/go/dockerfile/rule/from-as-casing/
'as' and 'FROM' keywords' casing do not match
Dockerfile:4
--------------------
   2 |
   3 |     # fetch images
   4 | >>> FROM node:22.11.0-bookworm-slim as node
   5 |     FROM us-docker.pkg.dev/berglas/berglas/berglas:2.0.1 as berglas
   6 |
--------------------

...

無事に動きましたー! docker build で buildx が使われている証拠ですね。

あとは指摘事項を粛々と直していくだけです。手元でチェックできるのはありがたい。

追記:すぐに修正完了しました!

$ docker build --check .
[+] Building 1.5s (7/7) FINISHED
# 中略
Check complete, no warnings found.

おわり

同僚は何年も前から BuildKit がーとよく言っていましたが、個人的にはあまり触る機会がなかったので新鮮です。今回の Warning 対応だけでなく、ビルド最適化についても掘り下げていきたい。ビルド時間を高速化したい!やっていき!

株式会社モニクル

Discussion

FAMASoonFAMASoon

面白い記事ありがとうございます!
1点、これは記事の範囲外かもしれないですが質問です。
colimaはApple siliconでも問題なく動作するのでしょうか?
いつか前にApple MなんとかのCPUでうまく動かなかった記憶があり…
もしうまく動くのなら採用を検討したいです