Docker buildx 编译多架构镜像

Mar 27, 2021 • 预计阅读时间 1 分钟

编译多架构镜像类似于源码编译里面的跨平台交叉编译,在一台宿主机器上编译出多个不同架构的镜像, 在不同架构上使用的时候直接 docker pull 就可以拉取到与本机架构相符的镜像。

安装 buildx

设置不再需要 sudo 执行 docker

sudo usermod -aG docker $USER 

重新登录或者重启系统生效。

打开实验功能以启用 buildx

export DOCKER_CLI_EXPERIMENTAL=enabled

安装 buildx,可以在 https://github.com/docker/buildx/releases 下载好编译的版本:

mkdir -p ~/.docker/cli-plugins
curl -L https://github.com/docker/buildx/releases/download/v0.5.1/buildx-v0.5.1.linux-arm64 > ~/.docker/cli-plugins/docker-buildx
chmod +x ~/.docker/cli-plugins/docker-buildx

也可以从源码编译最新版本:

export DOCKER_BUILDKIT=1
docker build --platform=local -o . https://github.com/docker/buildx.git
mkdir -p ~/.docker/cli-plugins
mv buildx ~/.docker/cli-plugins/docker-buildx

测试 buildx 是否已经可以使用了:

docker buildx version

输出结果:

github.com/docker/buildx v0.5.1-docker 11057da37336192bfc57d81e02359ba7ba848e4a

创建构建实例

创建一个名为 mybuilder 的构建实例,并设置为默认使用:

docker buildx create --name mybuilder
docker buildx use mybuilder

以上两条命令也可以合并为:

docker buildx create --name mybuilder --use

最后执行:

docker buildx inspect --bootstrap

构建实例就完成了。

如果需要删除构建实例:docker buildx rm mybuilder

编译多架构镜像

编译 linux/amd64linux/arm64 版本,并 push 到 hub.docker.com:

docker buildx build \
        --platform linux/amd64,linux/arm64 \
        -t XXX/xxx . --push

官方参考

https://www.docker.com/blog/getting-started-with-docker-for-arm-on-linux/

Docker
版权声明:如果转发请带上本文链接和注明来源。

lvv.me

iOS/macOS Developer

macOS 上备份和还原树莓派系统

Docker 设置代理的方式