使用Docker Buildx构建多架构多平台Docker镜像
创作时间:
作者:
@小白创作中心
使用Docker Buildx构建多架构多平台Docker镜像
引用
1
来源
1.
https://www.mapleflying.top/archives/using-docker-buildx-to-build-multi-architecture-and-multi-platform-docker-images.html
Docker Buildx 是一个强大的CLI插件,它基于BuildKit扩展了Docker的构建功能,使得开发者无需修改Dockerfile,就可以轻松构建支持不同CPU架构的Docker镜像,并且能够推送到Docker Hub。本文将详细介绍如何安装和使用Docker Buildx来构建多架构和多平台的Docker镜像。
安装 Docker Buildx
使用二进制安装
# 下载二进制文件
wget https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-amd64
# 创建文件夹
mkdir -p $HOME/.docker/cli-plugins
# 移动文件
mv buildx-v0.11.2.linux-amd64 $HOME/.docker/cli-plugins/docker-buildx
# 赋予二进制文件执行权限
chmod +x $HOME/.docker/cli-plugins/docker-buildx
编译二进制文件安装
建议采用编译安装的方式,避免在接下来的过程中出现奇怪的错误。
export DOCKER_BUILDKIT=1
docker build --platform=local -o . "https://github.com/docker/buildx.git"
mkdir -p $HOME/.docker/cli-plugins
mv buildx $HOME/.docker/cli-plugins/docker-buildx
chmod +x $HOME/.docker/cli-plugins/docker-buildx
启用 Buildx 插件
Docker Buildx 属于实验性功能,在确保 Docker 版本不低于 19.03,通过执行以下命令开启新特性,以启用 buildx 插件。
export DOCKER_CLI_EXPERIMENTAL=enabled
初始化 Docker Buildx
docker buildx create --name builderx
docker buildx use builderx
docker buildx inspect --bootstrap
启用 binfmt_misc
如果你使用的是 Docker 桌面版(包含 macOS 和Windows)默认已启用,而对于Linux系统,可通过运行一个特权容器来启用 binfmt_misc
docker run --privileged --rm tonistiigi/binfmt --install all
验证 binfmt_misc 是否开启:
ls -al /proc/sys/fs/binfmt_misc/
buildx 会通过 QEMU 模拟器和 binfmt_misc 模拟不同平台构建镜像,请查看是否包含 qemu-* 文件。
构建多平台镜像
可提前通过 docker login 命令登录 Docker Hub,在完成构建多平台镜像后,会同时推送镜像至 Docker Hub。
安装并启用后,我们就可以使用 Docker Buildx 来构建多平台镜像了,以往我们进行构建镜像的命令:
build -t ${IMAGE_NAME}:${VERSION} .
使用 Docker Buildx 体验上与 docker build 用法基本相同,构建多平台的命令为:
docker buildx build --platform=linux/amd64,linux/arm/v7,linux/arm64/v8 -t ${IMAGE_NAME}:${VERSION} . --push
- --platform:指定需要构建的平台,例如:linux/amd64、linux/arm64 或 darwin/amd64;
- --push:指构建完毕后自动推送到 Docker hub 仓库;
- -t:镜像的名称及 tag;
- .:表示 Dockerfile 文件位于当前路径下。
Docker 镜像完成构建、推送后,我们可以在 Docker Hub 找到对应镜像的 tag 就可以看到支持多个平台。
热门推荐
球化剂主要应用于球墨铸铁制备过程 硅铁稀土镁球化剂为主流产品
甲醛为什么溶于水中(甲醛溶于水可以用水除甲醛吗?)
增值税发票风险管理
电子烟:披着“时尚”外衣的健康隐患
手把手教你做银耳奶冻(又凉又甜的夏日清爽甜品,以“银耳”为主题)
房租收益高过存款利息,你愿意买房还是存钱?
买房还款能力如何评估?五步骤助你轻松搞定!
论中国古代经济结构与封建社会的长期延续
坚果什么时候吃最好,每天吃坚果的最佳时间
4 种你以为正常的症状,其实是过敏!
兽医提醒:狗狗误食电池的危险与应对方法
结肠癌晚期治疗方法
探究老班章茶的真实价格与市场价值
大模型如何使用才能最大化其潜力?
浅谈泰山石的文化论文
哪里能找到新能源汽车产业链的人才需求信息?
补牙需要多长时间?补牙全过程详解
补牙的流程及步骤
猫咪食谱:蔬菜选择与禁忌
在家就能做的6个静电小实验:从气球吸附到静电马达
电工基础知识:等电位原理及其应用
从粪便中获取的饮食信息,如何指导临床应用?
高中生学习日语的可能性与实践策略
NBA赛季赛制规则详解:从例行赛到总冠军赛
煤炭的形成过程和中国煤炭的分布
向日葵是春天的植物吗?详解向日葵的种植时间和生长周期
美国临床肿瘤学会指南:癌症患者治疗期间如何正确运动?
底特律变人游戏深度解析,玩后感如何?剧情揭秘!
选购茶叶的产地与品种选择
小学生英语0基础学习指南:全面解析英语启蒙方法与策略