安装buildx
1\ 目前安装较高版本docker 会自带buildx
2\ github 官网进行安装 https://github.com/docker/cli/blob/master/experimental/README.md
对于构建镜像的ARM版本,有如下两种方式:
- 在ARM机器上使用 docker build 进行构建;
- 在X86/AMD64 的机器上使用 docker buildx 进行交叉构建;
如需使用 buildx,需要开启docker的实验功能后,才可以使用,开启方式
编辑 /etc/docker/daemon.json 添加: { "experimental": true } 编辑 ~/.docker/config.json 添加: "experimental" : "enabled" 重启Docker使生效: sudo systemctl daemon-reload sudo systemctl restart docker 确认是否开启: docker version -f’{{.Server.Experimental}}’ 如果输出true,则表示开启成功
使用buildx构建
使用 docker buildx ls 命令查看现有的构建器
docker buildx ls
创建并构建器:
# 下面的创建命令任选一条符合情况的即可 # 1. 不指定任何参数创建 docker buildx create --use --name multiarch-builder # 2. 如创建后使用docker buildx ls 发现构建起没有arm架构支持,可使用--platform明确指定要支持的构建类型,如以下命令 buildx-config.toml 配置文件写法类似:
# https://github.com/moby/buildkit/blob/master/docs/buildkitd.toml.md
# registry configures a new Docker register used for cache import or output.
[registry."zh-registry.geostar.com.cn"]
mirrors = ["zh-registry.geostar.com.cn"]
http = true
insecure = true
启用构建器
docker buildx inspect multiarch-builder --bootstrap
docker buildx 构建arm64镜像的命令
docker buildx build --platform=linux/arm64,linux/amd64 -t xxxx:tag . --push
提示:当指定多个架构时,只能使用 --push 推送到远程仓库,无法 --load,推送成功后再通过 docker pull --platform 来拉取指定架构的镜像
在x86上运行arm镜像
可参考 github/qemu-user-static ,简要描述如下:
执行如下命令安装:
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
之后即可运行arm版本的镜像,如:
docker run --rm -t arm64v8/fedora uname -m
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步