BuildKit jako domyślny builder w Dockerze
21 Nov 2023Niedawno, uruchamiając Dockera, napotkałem błąd:
ERROR: BuildKit is enabled but the buildx component is missing or broken. Install the buildx component to build images with BuildKit: https://docs.docker.com/go/buildx/
Dokumentacja BuildKita potwierdza, że ten builder został włączony jako domyślny, w wersji 23.0 Dockera.
a Ubuntu 22.04 otrzymało ostatnio aktualizację do wersji 24, co można znaleźć w liście paczek.
apt list również to potwierdza:
$ apt list | grep docker.io docker.io/jammy-updates,now 24.0.5-0ubuntu1~22.04.1 amd64 [installed]
Workaround, jaki można zastosować, to DOCKER_BUILDKIT=0, który przełącza Dockera na przestarzały builder.
$ DOCKER_BUILDKIT=0 docker build -f Dockerfile.base --build-arg UID=$(id -u) --build-arg GID=$(id -g) -t zephyr-build:v3.5.0 .
Jeśli chcielibyśmy korzystać z nowego buildera, co też jest zalecane, będziemy potrzebować sugerowanych, lecz brakujących paczek.
- Odszukujemy zgubę
$ apt list | grep buildx docker-buildx/jammy-updates 0.11.2-0ubuntu1~22.04.1 amd64
- Ustawiamy plugin buildx jako domyślny
$ docker buildx install
Wszystko gotowe! Jedyna różnica do poprzedniego polecenia, to dodanie opcji --load która zapisze zbudowany obraz w lokalnej bazie Dockera.
$ docker build -f Dockerfile --build-arg UID=$(id -u) --build-arg GID=$(id -g) -t zephyr-build:v3.5.0 --load .