あらすじ
Docker 触り初めで docker build
に触れたとき・・・
docker build -t image-name .
# 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/
#
# (以降ビルドのログ)
ん?DEPRECATED だって?何か対応しとくか・・・。
調べると代わりに buildx
を使えと。
docker buildx
# docker: 'buildx' is not a docker command.
# See 'docker --help'
あれ、無いだと?何か導入しろと・・・。
build/buildx とは
Docker のビルドは、(超雑に言うと) dockerfile
からイメージを作ってくれるヤツです。
これについて、build
はレガシーとなっていて廃止予定、対し buildx
という新しいのに切り替えられる様子。
BuildKit というものを使って、ビルドをとても良い感じにグレードアップしてくれるらしい (よくわかっていない)。
早速 buildx
を導入
buildx
を導入しましょう。GitHub の README.md にインストールの説明があります。
どれどれ、Windows と MacOS なら Docker desktop に組み込まれていると。Linux は docker-buildx-plugin
パッケージをインストールせよと。
Linux Mint だけど、Rootless で入れてるからパッケージマネージャで入れても反映されないような・・・。その下にある Manual download でやってみます。
マニュアルダウンロードの場合、自動アップデートされないため、テスト用途ならいいけど、プロダクション用途には推奨されない様子
GitHub リポジトリの Releases からバイナリを入手します。
一般的な PC ならだいたい buildx-vx.x.x.linux-amd64
で良いはず。
あとはこれを所定の場所に配置 (ファイル名は docker-buildx
に)。これも README.md にある通り。実行権限の付与もお忘れなく。
mv <ダウンロードしたファイル> ~/.docker/cli-plugins/docker-buildx
chmod +x .docker/cli-plugins/docker-buildx
これで docker buildx
が使えるようになるはず。
docker buildx
# Extended build capabilities with BuildKit
#
# Usage: docker buildx [OPTIONS] COMMAND
#
# (以降オプション詳細など)
おまけ: ビルドキャッシュの効能がわかりやすい
buildx
で、適当な dockerfile をビルドしてみることにします。自分の記事で作った、Git インストール済み Debian の dockerfile
で試します。
カレントに以下のような dockerfile
を作成。
FROM debian
RUN apt update
RUN apt install -y git
一旦ビルド。
docker build -t image-name .
イメージを削除し、ビルドし直してみてください。
docker rmi image-name
docker build -t image-name .
レガシーのビルドだと最初から律儀にビルドしてくれますが、buildx
ではキャッシュのおかげで 2度目はすぐに完了します (するハズ)。