Setting up docker buildx on Linux
Setting up docker buildx on Linux
December 5, 2020
Docker buildx on Linux
Installation instructions for Ubuntu
To execute docker commands without sudo. We need to add the username to the docker group.
- Find the current username by typing
who - Add username to
dockergroup - Reboot system
$ who
vikaspogu :0 2020-12-05 10:10 (:0)
$ sudo usermod -aG docker vikaspogu
$ sudo rebootEnable buildx
Create a new config.json file under the ~.docker folder and enable the experimental feature
$ mkdir ~/.docker
$ vim ~/.docker/config.json
{
"experimental": "enabled"
}Now you should be able to do multi-arch builds
docker buildx build -t vikaspogu/test:v0.0.1 . --push --platform linux/arm64If you encounter the below error when trying to build the image using buildx. It would help if you created new build instance
failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to load LLB: runtime execution on platform linux/arm64 not supportedCreate build instance
Follow the below steps to create a new build instance for arm64.
- List existing buildx platforms
- Create a new build instance named
arm64 - Inspect build instance to verify
arm64platform exists - Set builder instance
- Build multi-platform image
$ docker buildx ls
NAME/NODE DRIVER/ENDPOINT STATUS PLATFORMS
default docker
default default running linux/amd64, linux/386
# create the builder
$ docker buildx create --name amr64 --platform linux/amd64,linux/arm64
# start the buildx
$ docker buildx inspect arm64 --bootstrap
Name: arm64
Driver: docker-container
Nodes:
Name: arm640
Endpoint: unix:///var/run/docker.sock
Status: running
Platforms: linux/amd64*, linux/arm64*, linux/riscv64, linux/ppc64le, linux/386, linux/arm/v7, linux/arm/v6, linux/s390x
# set current builder instance
$ docker buildx use amr64
# build the multi images
$ docker buildx build -t vikaspogu/test:v0.0.1 . --push --platform linux/arm64If you encounter
/bin/sh: Invalid ELF image for this architectureerror. Run the following docker image and then build
docker run --rm --privileged multiarch/qemu-user-static --reset -p yesLast updated on